[color=violet]代码1:
InetAddress inet = InetAddress.getLocalHost();
System.out.println("本机的ip=" + inet.getHostAddress());
在window上可以通过。我在linux下测试,可以返回正确ip。
但是,网上有人说,在linux下返回的是127.0.0.1(因为在linux下返回的是/etc/hosts中配置的localhost的ip地址,而不是网卡的绑定地址。后来改用网卡的绑定地址,可以取到本机的ip地址),并给出如下代码。
我测试了一下,可以工作。
//根据网卡取本机配置的IP
Enumeration netInterfaces=NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while(netInterfaces.hasMoreElements()){
NetworkInterface ni=(NetworkInterface)netInterfaces.nextElement();
System.out.println(ni.getName());
ip=(InetAddress) ni.getInetAddresses().nextElement();
if( !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":")==-1)
{
System.out.println("本机的ip=" + ip.getHostAddress());
break;
}
else
{
ip=null;
}
}[/color]
InetAddress inet = InetAddress.getLocalHost();
System.out.println("本机的ip=" + inet.getHostAddress());
在window上可以通过。我在linux下测试,可以返回正确ip。
但是,网上有人说,在linux下返回的是127.0.0.1(因为在linux下返回的是/etc/hosts中配置的localhost的ip地址,而不是网卡的绑定地址。后来改用网卡的绑定地址,可以取到本机的ip地址),并给出如下代码。
我测试了一下,可以工作。
//根据网卡取本机配置的IP
Enumeration netInterfaces=NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while(netInterfaces.hasMoreElements()){
NetworkInterface ni=(NetworkInterface)netInterfaces.nextElement();
System.out.println(ni.getName());
ip=(InetAddress) ni.getInetAddresses().nextElement();
if( !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":")==-1)
{
System.out.println("本机的ip=" + ip.getHostAddress());
break;
}
else
{
ip=null;
}
}[/color]