'address'에 해당되는 글 1건

  1. 2008.03.07 Linux에서 현재 local의 ip확인하기 (2)
2008. 3. 7. 10:31
구글에서 검색해보니

Inet Address inetaddr = InetAddress.getLocalHost();
inetaddr.getHostAddress();

를 리눅스에서 사용하면,  127.0.0.1을 반환해 주는데, 이 주소는 LoopBack 주소를 말합니다.
윈도우에서는 실제 설정해놓은 ip를 반환한다고 합니다.
LoopBack 주소를 반환하는 것은 합당하다는 글이 좀 있었는데.
어쨌거나 제가 하고 싶은 것은 메시지 기반 통신에서 필요할 때마다 ServerSocket을 띄우고 메시지를 받을 Agent에게 접속할 ip와 port를 알려주어서 Binary File을 받아가게 하고 싶은 것입니다.

이를 위해서 NetworkInterface.getNetworkInterfaces()를 사용했습니다.
이 정적 메쏘드를 사용하면 시스템이 갖고 있는 NetworkInterface들을 Enumeration<NetworkInterface>로 반환해주는데, 이를 확인해보면 ip를 확인할 수 있습니다.

Enumeration<NetworkInterface> ne = NetworkInterface.getNatworkInterfaces();
while ( ne.hasMoreElements()) {
     NetworkInterface ni = ne.nextElement();
     System.out.println("Name : " + ni.getName());
     Enumeration<InetAddress> inets = ni.getInetAddresses()/;
     while(inets.hasMoreElements();
          InetAddress iaddr = inets.nextElement();
          System.out.println("INet --> isSiteLocalAddress() -->" + iaddr.isSiteLocalAddress());
     }
}

간략히 위와 같은 식으로 해서 NetworkInterface의 이름이 regular expression "eth[0-9]'인 것을 찾은 다음, isSiteLocalAdresss()를 통해 true인 것을 확인하면, local ip를 확인할 수 있습니다.

검색한 글에서 추천하는 방법은 외부와의 socket연결이 되어 있다면 그 socket연결을 통해서 ip를 확인하는 방법이 좋다고 합니다.

꼼수꼼수...
Posted by 나야

댓글을 달아 주세요

  1. 랜덤여신 2008.03.08 17:45  댓글주소  수정/삭제  댓글쓰기

    HTTP가 허용되는 환경이라면 http://barosl.com/ip 같이 IP 주소만 간단하게 출력하는 페이지를 만들어 사용하는 것도 괜찮은 듯합니다. 몇 번 그런 적이 있어요.

    배보다 배꼽이 큰 방법이려나요? 흐흐...

  2. 나야 2008.03.09 00:38 신고  댓글주소  수정/삭제  댓글쓰기

    앗 첫번째 댓글이네요~

    블로그에 재밌는 글이 많네요 자주 가야 겠어요^^