웹에서 라우터가 내 컴퓨터에 제공 한 IP 주소를 얻으려면 두 가지 예가 있습니다. 여기 코드이다Java : 내 홈 네트워크에서 내 자신의 IP 주소 얻기
import java.net.InetAddress;
import java.net.UnknownHostException;
public class tryNet {
public static void displayStuff(String whichHost, InetAddress inetAddr) {
System.out.println("---------------------");
System.out.println("host: " + whichHost);
System.out.println("Canonical host name: " + inetAddr.getCanonicalHostName());
System.out.println("Host Name: " + inetAddr.getHostName());
System.out.println("Host Address: " + inetAddr.getHostAddress());
System.out.println("---------------------");
}
public static void main(String argv[]) {
try {
InetAddress inetAddr = InetAddress.getLocalHost();
displayStuff("localhost", inetAddr);
}
catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
I 판독했는지) ( 의 InetAddress inetAddr = InetAddress.getLocalHost 초기화 한 후; inetAddr.getHostAddress() 내 라우터에서 제공하는 IP 주소 (우분투의 터미널에서 ifconfig를 작성하거나 Windows에서 ipconfig를 작성하는 것과 같은)를 얻으려면 대신에 루프백 주소를 반환합니다. .. (127.0.0.1) 왜?
보안 관리자가있는 경우 checkConnect 메소드가 로컬 호스트 이름과 -1을 인수로 호출되어 작업이 허용되는지 확인합니다. 작업이 허용되지 않으면 루프백 주소를 나타내는 InetAddress가 반환됩니다. 아마이 보안 관리자가 127.0.0.1을 제공합니다 ... 피할 수 있습니까? – user1576208
'InetAddress.getLocalHost()'에 의존 할 수 없다. 코드가 실행될 호스트가 결코 멀티 홈 (multi-homed)이되지 않을 것임을 확신 할 수 없다면 (즉, 여러 개의 IP 주소를 가짐). 프로덕션 코드에서는 일반적으로'InetAddress.getLocalHost()'는 피해야합니다. – peterh