Java:Socket编程-使用InetAddress获取我的系统IP地址

Java:Socket编程-使用InetAddress获取我的系统IP地址,java,sockets,Java,Sockets,使用InetAddress,即使我连接到网络,并且从dhcp获得的Ip类似于:172.17.13.41,我也总是获得环回地址。为什么? 我有这样的想法: InetAddress address = InetAddress.getLocalHost(); String myIp = address.getHostAddress(); System.out.println(myIp); // I expect the output 172.17.13.41 not 127.0.1.1 这个问题解决

使用InetAddress,即使我连接到网络,并且从dhcp获得的Ip类似于:172.17.13.41,我也总是获得环回地址。为什么?

我有这样的想法:

InetAddress address = InetAddress.getLocalHost();
String myIp = address.getHostAddress();
System.out.println(myIp); // I expect the output 172.17.13.41 not 127.0.1.1

这个问题解决了同样的问题:

或者您的问题有什么不同?

尝试使用:

InetAddress address = InetAddress.getByName("172.17.13.41");
String myIp = address.getHostAddress();
System.out.println(myIp); // I expect the output 172.17.13.41

根据java文档,
InetAddress.getLocalHost()
可能会返回回圈地址。

Ya我知道了。但我没有什么疑问:我得到的输出是'eth0 fe80:0:0:0:216:d3ff:feeb:eaf9%2',然后是'eth0 172.17.13.41',输出中的第一行是什么?是Inet-6地址吗?如果是这样,我们可以过滤掉Inet-4和Inet-6地址吗?iface.isUp()方法有什么用?是的,fe80::/10应该是IPv6中的本地地址。我建议您尝试通过一些正则表达式来检查地址(以区分IPv4和IPv6),但这正是我想要找到的。如果我不知道我的IP是172.17.13.41,我怎么能使用getByName(“172.17.13.41”)方法?你在开玩笑吧?如果你知道答案,你能得到答案吗-1.