使用什么IP进行自测?

使用什么IP进行自测?

一组服务器在特定端口上提供功能(该端口监听所有接口)。服务器必须通过连接自身来自我测试其自身功能。测试连接应使用什么 DNS 名称或 IP?

理想情况下,我会使用其中一个本地 IP 并完成它(例如“192.13.1.5”)。但是,获取本地 IP 列表对于测试代码来说很困难。

我可以使用“localhost”(127.0.0.1),但这会使用环回接口并绕过网络硬件。这让我想到...

问题:有没有简写形式“此服务器使用的任何本地 IP”?(环回地址除外)。

在 Linux 上使用“0.0.0.0”似乎有效,但在 Windows 上无效。

答案1

除了 Michael Hampton 的建议外,Windows 应该将其识别%computername%为环境变量,您可以对其进行 ping 等操作。

在我看来,PowerShell cmdletTest-NetConnection和 Windows 环境变量可能会满足您的要求。您可以指定一个端口,但由于您没有提到端口,所以我只使用了

Test-NetConnection -ComputerName $env:COMPUTERNAME

在我的笔记本电脑上,这个方法运行良好。检查端口 135 的端口语法(随机示例)如下:

Test-NetConnection -Port 135 -ComputerName $env:COMPUTERNAME

答案2

谢谢大家 - 非常感谢你们的帮助。是的,主机名环境变量可以工作,但需要代码才能访问。我同意 Shane - 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),包括绑定到环回接口的 IP 地址
  • NonLoopbackIPv4Address - 此主机的所有 IPv4 地址列表,不包括绑定到环回接口的地址
  • NonLoopbackIPv6Address - 此主机的所有 IPv6 地址列表,不包括绑定到环回接口的地址

相关内容