Java를 사용하여 컴퓨터의 LAN IP 주소를 얻으려면 어떻게해야합니까? 나는 라우터와 네트워크의 나머지 부분에 연결된 IP 주소를 원한다.Java를 사용하여 클라이언트의 LAN IP를 얻는 방법은 무엇입니까?
Socket s = new Socket("www.google.com", 80);
String ip = s.getLocalAddress().getHostAddress();
s.close();
이 어떤 경우에 작동하는 것, 그러나 때때로 그것은 루프백 주소 또는 완전히 다른 무언가를 반환
나는 이런 식으로 뭔가를 시도했습니다. 또한 인터넷 연결이 필요합니다.
누구든지이 작업을 수행하는보다 정확한 방법이 있습니까?
편집 :이 코멘트에 비해 여기 물어 더 좋을 거라 생각 .. 당신이 많은 인터페이스를 가지고하면 어떻게
? 예를 들어 케이블 용, Wi-Fi 용, 가상 박스 용 등이 있습니다. 어떤 것이 네트워크에 연결되어 있는지 실제로 볼 수 있습니까?
+1 if (cur.isLoopback()) – aioobe
많은 인터페이스가 있다면? 예를 들어 케이블 용, Wi-Fi 용, 가상 박스 용 등이 있습니다. 네트워크에 어느 것이 연결되어 있는지 실제로 파악하는 것은 불가능합니까? – cragiz
@Henrik. 이 경우 모두가 '연결'됩니다. 어느 것이 외부 라우팅에 사용될 것인지 결정하는 것은 OS에 달려 있습니다. 이 소켓 생성자는 http://java.sun.com/j2se/1.5.0/docs/api/java/net/Socket.html#Socket(java.net.InetAddress,%20int,%20java.net)을 사용할 수 있습니다. InetAddress, % 20int) 특정 로컬 주소와 포트를 선택하거나 기본 소켓을 구성하여 특정 인터페이스에 바인딩합니다. 또한 NetworkInterface 객체에서 필요한 정보를 확인할 수 있는지 확인하십시오. –