[ JAVA ] Linux 에서 java 로 local ip 알아 내기
ip4 기반의 ip 를 테스트 하였고 ip6 는 테스트 해보지 않았습니다.
소스는 아래와 같습니다.
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class IpTest{
public static void main(String[] args){
IpTest ipTest = new IpTest();
System.out.println(ipTest.getLocalServerIp());
}
private String getLocalServerIp(){
String ip = "";
try{
Enumeration en = NetworkInterface.getNetworkInterfaces();
while(en.hasMoreElements()){
NetworkInterface ni = (NetworkInterface)en.nextElement();
Enumeration inetAddresses = ni.getInetAddresses();
while(inetAddresses.hasMoreElements()){
InetAddress ia = (InetAddress)inetAddresses.nextElement();
if(ia.getHostAddress() != null && ia.getHostAddress().indexOf(".") != -1){
byte[] address = ia.getAddress();
if(address[0] == 127) continue;
ip = ia.getHostAddress();
break;
}
}
if(ip.length()>0){
break;
}
}
}catch(Exception e){
e.printStackTrace();
}
return ip;
}
}
=========================이렇게 하면 결과는[root@centos-server ~]# java IpTest
10.211.55.5
[root@centos-server ~]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:1C:42:26:F1:C6
inet addr:10.211.55.5 Bcast:10.211.55.255 Mask:255.255.255.0
inet6 addr: fdb2:2c26:f4e4:0:21c:42ff:fe26:f1c6/64 Scope:Global
inet6 addr: fe80::21c:42ff:fe26:f1c6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:73368 errors:0 dropped:0 overruns:0 frame:0
TX packets:38389 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:108460695 (103.4 MiB) TX bytes:2238786 (2.1 MiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:480 (480.0 b) TX bytes:480 (480.0 b)