개발 등/JAVA

[JAVA] 모든 OS에서 서버의 고정IP 조회하기

darkhorizon 2014. 1. 7. 11:27
728x90
반응형

WAS나 웹서버가 구동되는 서버 IP를 조회할 때 OS가 Windows 계열일 때는 

String hostAddr = java.net.InetAddress.getLocalHost().getHostAddress();

를 하면 문제가 없다.


그런데 UNIX나 LINUX에서 해당 소스를 구동하면 


java.net.UnknownHostException 등의 에러가 나거나 제대로 된 IP를 반환하지 않는다.

OS나 장치에 상관없이 고정 IP를 가져오기 위해선 


String hostAddr = "";

try {

Enumeration<NetworkInterface> nienum = NetworkInterface.getNetworkInterfaces();

while (nienum.hasMoreElements()) {

NetworkInterface ni = nienum.nextElement();

Enumeration<InetAddress> kk= ni.getInetAddresses();

while (kk.hasMoreElements()) {

InetAddress inetAddress = kk.nextElement();

if (!inetAddress.isLoopbackAddress() && 

!inetAddress.isLinkLocalAddress() && 

inetAddress.isSiteLocalAddress()) {

hostAddr = inetAddress.getHostAddress().toString();

}

}

}

} catch (SocketException e) {

e.printStackTrace();


이렇게 사용하면 된다.

728x90