Группа серверов предлагает функции на определенном порту (порт прослушивает все интерфейсы). Серверы должны самостоятельно тестировать свою функциональность, подключаясь к себе. Какое DNS-имя или IP-адрес следует использовать при тестовом соединении?
В идеале я бы использовал один из локальных IP-адресов и покончил с ним (например, '192.13.1.5'). Однако для тестового кода получить список локальных IP-адресов сложно.
Я могу использовать localhost (127.0.0.1), но он использует интерфейс обратной петли и обходит сетевое оборудование. Что приводит меня к ...
Вопрос: Есть ли сокращенное обозначение для «Любой локальный IP-адрес, который использует этот сервер»? (кроме адреса обратной связи).
Использование «0.0.0.0» похоже работает в Linux, но не в Windows.
Чтобы добавить к предложению Майкла Хэмптона, Windows должна распознавать %computername%
в качестве переменной среды, которую вы можете пропинговать и т. д.
Мне кажется, что командлет PowerShell Test-NetConnection
вместе с переменной среды Windows может делать то, что вы хотите. Вы можете указать порт, но, поскольку вы не упомянули один, я просто использовал
Test-NetConnection -ComputerName $env:COMPUTERNAME
и это отлично работало на моем ноутбуке. Синтаксис порта для проверки порта 135 (в качестве случайного примера) будет следующим:
Test-NetConnection -Port 135 -ComputerName $env:COMPUTERNAME
Спасибо, ребята - глубоко признательны за вашу помощь. Да, переменные среды имени хоста будут работать, но для доступа потребуется код. Я с Шейном - 0.0.0.0 должен работают, но в этом есть что-то хитрое.
Я решил, что мне нужно создать код (который должен быть Java), поэтому я написал это, чтобы получить три набора IP-адресов:
List<String> IPAddress = new ArrayList<String>();
List<String> NonLoopbackIPv4Address = new ArrayList<String>();
List<String> NonLoopbackIPv6Address = new ArrayList<String>();
try {
Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
while(en.hasMoreElements()){
NetworkInterface ni=(NetworkInterface) en.nextElement();
Enumeration<InetAddress> ea = ni.getInetAddresses();
while(ea.hasMoreElements()) {
InetAddress ia= (InetAddress) ea.nextElement();
//Add entries to the overall address array
IPAddress.add(ia.getHostAddress());
//Add entries to non-loopback IPv4 address array
if (!ia.isLoopbackAddress() && (ia.getClass() == Inet4Address.class)) {
NonLoopbackIPv4Address.add(ia.getHostAddress());
}
//Add entries to non-loopback IPv6 address array
if (!ia.isLoopbackAddress() && (ia.getClass() == Inet6Address.class)) {
NonLoopbackIPv6Address.add(ia.getHostAddress());
}
}
}
} catch (Exception e) {
//catch and process necessary exceptions, etc...
throw new Exception (e);
}
...где: