원격 서버에 (tcp를 통해) 연결하는 데 사용되는 로컬 IP 주소를 알아야하는 클라이언트 Java 프로그램을 작성하고 있습니다.getLocalAddress는 연결된 소켓에서 127.0.0.1을 반환합니다.
문제는 ... 사건/PC의 대부분에서 잘 작동하는 동안 전화 Socket.getLocalAddress(). getHostAddress()가, 127.0.0.1 (만 드문 경우) 잘못 반환한다는 것입니다
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;
}
I가 계속되는 경우에 수득 출력은 I가 실패한 경우에 수득 출력은 0123이다
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
실패한 경우에는 예외가 발생하지 않았습니다.
모든 조언은 매우 감사하겠습니다.
당신은 로컬 IP를 의미합니까 : ... [link] (http://www.whatismyip.com)에 갔을 때와 같은 것이 따라야합니까? – lukey
원격 주소가 원격입니까? 또는 127.0.0.1입니까? 로컬 주소와 함께 원격 주소를 인쇄하는 것이 좋습니다. 둘 다 127.0.0.1 인 경우 여기에서 문제를 해결할 수 있습니다. – EJP
예 : 로컬 주소가 6.7.8.9이고 원격 주소가 1.2.3.4 인 경우 – MDot