2013-02-09 3 views
0

웹에서 라우터가 내 컴퓨터에 제공 한 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) 왜?

+0

보안 관리자가있는 경우 checkConnect 메소드가 로컬 호스트 이름과 -1을 인수로 호출되어 작업이 허용되는지 확인합니다. 작업이 허용되지 않으면 루프백 주소를 나타내는 InetAddress가 반환됩니다. 아마이 보안 관리자가 127.0.0.1을 제공합니다 ... 피할 수 있습니까? – user1576208

+0

'InetAddress.getLocalHost()'에 의존 할 수 없다. 코드가 실행될 호스트가 결코 멀티 홈 (multi-homed)이되지 않을 것임을 확신 할 수 없다면 (즉, 여러 개의 IP 주소를 가짐). 프로덕션 코드에서는 일반적으로'InetAddress.getLocalHost()'는 피해야합니다. – peterh

답변

4

PC에는 여러 개의 인터페이스 (둘 이상)와 여러 개의 IP 주소 (네트워크에 연결되어있는 경우)가 있습니다. 일반적으로 localhost은 (루프백 인터페이스에서) 127.0.0.1으로 해결되며 사용중인 다양한 방법이이를 반환 할 것입니다.

다음은 당신이 그들에게 할당 된 모든 기계의 인터페이스와 IP 주소를 표시합니다 :

public static void main(String[] args) throws InterruptedException, IOException 
{ 
    Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); 
    while (e.hasMoreElements()) 
    { 
     NetworkInterface n = e.nextElement(); 
     System.out.println(n.getName()); 
     Enumeration<InetAddress> ee = n.getInetAddresses(); 
     while (ee.hasMoreElements()) 
     { 
      InetAddress i = ee.nextElement(); 
      System.out.println(i.getHostAddress()); 
     } 
    } 
} 
1

일반적으로 당신 호스트 인터페이스를 루프백 가리키는 이름이 있습니다. IP 주소가 할당 된 DHCP 서버. 귀하의 DHCP 클라이언트 구성 호스트에 따라 새로운 이름을 사용할 수도 있습니다.