Local-Area-Network
使用什麼IP進行自測?
一堆伺服器在特定埠上提供功能(埠偵聽所有介面)。伺服器必須通過連接自身來自我測試自己的功能。測試連接應使用什麼 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 cmdlet
Test-NetConnection
以及 Windows 環境變數可能會滿足您的需求。您可以指定一個埠,但是由於您沒有提到我剛剛使用的埠Test-NetConnection -ComputerName $env:COMPUTERNAME
這在我的筆記型電腦上執行良好。檢查埠 135 的埠語法(作為隨機範例)將是
Test-NetConnection -Port 135 -ComputerName $env:COMPUTERNAME