Назад | Перейти на главную страницу

Какой IP использовать для самотестирования?

Группа серверов предлагает функции на определенном порту (порт прослушивает все интерфейсы). Серверы должны самостоятельно тестировать свою функциональность, подключаясь к себе. Какое 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);
    }

...где:

  • IPAddress - список всех IP-адресов для этого хоста (v4 и v6), включая те, которые привязаны к интерфейсу обратной связи.
  • NonLoopbackIPv4Address - список всех IPv4-адресов для этого хоста, исключая те, которые привязаны к интерфейсу обратной связи.
  • NonLoopbackIPv6Address - список всех адресов IPv6 для этого хоста, за исключением тех, которые привязаны к интерфейсу обратной связи