Local-Area-Network

使用什麼IP進行自測?

  • August 4, 2015

一堆伺服器在特定埠上提供功能(埠偵聽所有介面)。伺服器必須通過連接自身來自我測試自己的功能。測試連接應使用什麼 DNS 名稱或 IP?

理想情況下,我會使用其中一個本地 IP 並完成它(例如“192.13.1.5”)。但是,對於測試程式碼來說,獲取本地 IP 列表是很困難的。

我可以使用’localhost’(127.0.0.1),但這使用環回介面並繞過網路硬體。這導致我…

問題:*“此伺服器使用的任何本地 IP”*是否有簡寫符號?(環回地址除外)。

使用 ‘0.0.0.0’ 似乎適用於 Linux,但不適用於 Windows。

謝謝大家 - 非常感謝您在這裡的幫助。是的,主機名環境變數可以工作,但需要程式碼才能訪問。我和 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),包括綁定到環回介面的那些
  • NonLoopbackIPv4Address - 此主機的所有 IPv4 地址列表,不包括綁定到環回介面的地址
  • NonLoopbackIPv6Address - 此主機的所有 IPv6 地址列表,不包括綁定到環回介面的地址

為了增加 Michael Hampton 的建議,Windows 應該將其辨識%computername%為環境變數,您可以 ping 等。

在我看來,PowerShell cmdletTest-NetConnection以及 Windows 環境變數可能會滿足您的需求。您可以指定一個埠,但是由於您沒有提到我剛剛使用的埠

Test-NetConnection -ComputerName $env:COMPUTERNAME

這在我的筆記型電腦上執行良好。檢查埠 135 的埠語法(作為隨機範例)將是

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

引用自:https://serverfault.com/questions/710634