Java 애플릿에서 로컬 IP 주소를 확인하고 싶습니다. 문제는 LAN과 인터넷 연결 (palm, VMWare ...)이있는 동일한 컴퓨터에 여러 IP 주소가있는 경우입니다.Java 애플릿에서 올바른 로컬 IP 주소를 가져옵니다.
public static void main(String[] args) {
try {
String hostName = InetAddress.getLocalHost().getHostName();
System.out.println("HostName = " + hostName);
System.out.println("HostAddressLocal = " +
InetAddress.getLocalHost().getHostAddress());
InetAddress[] inetAddresses = InetAddress.getAllByName(hostName);
for (InetAddress inetAddress : inetAddresses) {
System.out.println("hostAddress = " + inetAddress.getHostAddress());
}
} catch (Exception e) {
e.printStackTrace();
}
}
결과는 다음과 같습니다 :
여기 내 테스트입니다
HostName = xxxx
HostAddressLocal = xx.xx.xx.xx
hostAddress = 10.10.11.51
hostAddress = 192.168.23.1
hostAddress = 192.168.106.1
xx.xx.xx.xx이 올바른 주소가 아닙니다. 올바른 것은 10.10.11.51입니다. jarnbjo에 응답
편집 :
귀하의 수정 구슬은 진실을 말한다. 당신은 내 문제를 이해했습니다. 클라이언트는 프록시를 통해 연결할 수 있으므로 첫 번째 지점을 사용할 수 없습니다. 내 컴퓨터에서 다음이 코드를 실행하면 : getHostName의 하단에서
Internet IP = /127.0.0.1
그리고하지 10.10.11.51
애플릿입니까? 기본 및 로컬 UP 주소에 액세스 할 수 있습니까? –
그 문제도있었습니다. – KLE
정확히 무엇을하려고합니까? 왜이 정보가 필요한가요? 사용자에게 로컬 주소가없는 경우에는 어떻게해야합니까? 사용자가 많은 인터페이스와 많은 로컬 주소를 가지고 있으면 어떻게 될까요? 사용자가 IPv6을 사용한다면 (각 인터페이스는 잠재적으로 많은 주소를 가질 수 있습니다)? 프로그램에 몇 가지 디자인 문제가 있습니다. 올바르게 작동하려면이 특성에 의존해서는 안됩니다. – Juliano