可以用如下代码:
InetAddress inet = InetAddress.getLocalHost();
System.out.println("本机的ip=" + inet.getHostAddress());
在window下面可以工作。在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.isSiteLocalAddress()
&& !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":")==-1)
{
System.out.println("本机的ip=" + ip.getHostAddress());
break;
}
else
{
ip=null;
}
}
本文介绍了一种使用Java代码来获取本机IP地址的方法。针对Windows和Linux平台的不同表现,给出了具体的解决方案。通过遍历网络接口的方式,在Linux环境下也能准确获取到实际的网卡绑定IP,而非默认的localhost地址。
1434

被折叠的 条评论
为什么被折叠?



