我正在编写一个客户端 Java 程序,它需要知道用于(通过 tcp)连接到远程服务器的本地 IP 地址。
问题是调用 Socket.getLocalAddress().getHostAddress() 错误地返回(仅在少数情况下)127.0.0.1,而在大多数情况下/PC 中它工作正常......
这是使用的代码片段:
public static String getLocalIPAddress(String serverIP, int port) throws UnknownHostException
{
System.out.println("Executing getLocalIPAddress on "+serverIP + ":" + port);
InetAddress inetAddress = InetAddress.getLocalHost();
String ipAddress = inetAddress.getHostAddress();
try {
Socket s = new Socket(serverIP, port);
ipAddress = s.getLocalAddress().getHostAddress();
System.out.println("Local IP : "+s.getLocalAddress().getHostAddress());
s.close();
} catch (Exception ex) {}
return ipAddress;
}
我在成功案例中获得的输出是
Executing getLocalIPAddress...
Executing getLocalIPAddress on 1.2.3.4:80
Local IP : 6.7.8.9
我在失败情况下获得的输出是
Executing getLocalIPAddress...
Executing getLocalIPAddress on 1.2.3.4:80
Local IP : 127.0.0.1
请注意,在失败的情况下,它没有经历异常。
非常感谢任何建议。