我在網上找到兩個例子來獲取路由器給我的電腦的IP地址。 下面是代碼:Java:在我的家庭網絡中獲取我自己的IP地址
import java.net.InetAddress;
import java.net.UnknownHostException;
public class tryNet {
public static void displayStuff(String whichHost, InetAddress inetAddr) {
System.out.println("---------------------");
System.out.println("host: " + whichHost);
System.out.println("Canonical host name: " + inetAddr.getCanonicalHostName());
System.out.println("Host Name: " + inetAddr.getHostName());
System.out.println("Host Address: " + inetAddr.getHostAddress());
System.out.println("---------------------");
}
public static void main(String argv[]) {
try {
InetAddress inetAddr = InetAddress.getLocalHost();
displayStuff("localhost", inetAddr);
}
catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
我已閱讀,在已經初始化 的InetAddress的InetAddr = InetAddress.getLocalHost(); 我可以使用方法 inetAddr.getHostAddress() 獲取我的IP地址,我的路由器給出的IP地址(例如在ubuntu的終端中寫入ifconfig或在Windows中使用ipconfig) 取而代之,它返回我的回送地址。 ..(127.0.0.1) 爲什麼?
如果存在安全管理器,則使用本地主機名和-1作爲其參數調用其checkConnect方法,以查看是否允許執行該操作。如果操作不被允許,代表環回地址的InetAddress被返回....也許它的這個安全管理器給我127.0.0.1 ...是否有可能避免它? – user1576208 2013-02-09 17:09:42
除非您確定您的代碼運行所在的主機永遠不會多宿主(即具有多個IP地址),否則您不能依賴'InetAddress.getLocalHost()'。在生產代碼中應該避免使用'InetAddress.getLocalHost()'。 – peterh 2013-10-03 07:22:38