2011년 5월 18일 수요일

[Java] NetworkInterface를 이용한 IP추출


InetAddress.getLocalHost() vs Socket.getLocalAddress() 를 이용하면..

Windows에서는 정상적으로 IP가 출력되지만,

Linux에서는 127.0.0.1 이 출력된다.

이는 /etc/hosts 에 설정된 값이  127.0.0.1 ==> localhost 로 되어있는 경우인데,

이 hosts 파일을 수정하지 않으면, 계속 127.0.0.1 만 출력된다.

아래 소스에서는 NetworkInreface를 이용하여..

이더넷설정중 eth0 의 IP를 꺼내는 방법을 소개하고있다.

--------------------------------------------------------------

import java.net.*;
import java.util.*;

public class GetPublicHostname{
public static void main(String[] args) throws Throwable{
 NetworkInterface iface = null;
 for(Enumeration ifaces =      NetworkInterface.getNetworkInterfaces();ifaces.hasMoreElements();){
  iface = (NetworkInterface)ifaces.nextElement();
  System.out.println("Interface:"+ iface.getDisplayName());
  InetAddress ia = null;
   for(Enumeration ips =    iface.getInetAddresses();ips.hasMoreElements();){
   ia = (InetAddress)ips.nextElement();
   System.out.println(ia.getCanonicalHostName()+" "+    ia.getHostAddress());
   }
  }
 }
}

출처: http://www.jguru.com/faq/view.jsp?EID=790132

댓글 없음:

댓글 쓰기