【发布时间】:2013-12-18 08:33:03
【问题描述】:
我正在使用 Windows 8 和 JDK 1.7。我的IP地址是192.168.1.108,运行时:
System.out.println(InetAddress.getLocalHost().equals(InetAddress.getByName("localhost")));
或
System.out.println(InetAddress.getLocalHost().equals(InetAddress.getByName("127.0.0.1")));
输出 - 都是假的。
InetAddress.getLocalHost() - Output: 192.168.1.108
InetAddress.getByName("localhost") - Output: 127.0.0.1
此外,我的 UDP 服务器绑定在 InetAddress.getLocalHost() 上,如果客户端将数据包发送到 InetAddress.getByName("localhost"),它就无法从客户端接收任何内容。但是,如果客户端发送到InetAddress.getLocalHost(). 端口是正确的,它会很好地工作。
有人知道区别吗?提前致谢。
【问题讨论】:
-
可能
getLocalHost()方法会进行名称解析并将地址解析为 127.0.0.1(或任何其他 ip)。于是问题就变成了:localhost和127.0.0.1有什么区别。在这里查看:stackoverflow.com/questions/7382602/… -
不,System.out.println(InetAddress.getByName("localhost").equals(InetAddress.getByName("127.0.0.1"))) 给了我真的
-
因为
getByName和getLocalhost方法都会返回一个InetAddress对象。equals方法在InetAddress类中被覆盖,如果 IP 相同,则返回 true。在这里查看:docs.oracle.com/javase/7/docs/api/java/net/…
标签: java networking udp