我在网上找到两个例子来获取路由器给我的电脑的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