获得此机器IP是一个相对常见的需求情况。例如,业务警报可能会带来该问题的机器IP,这很方便地向上查看日志定位问题。然后问题来了,如何获取机器IP?
如何获取机器IP?如果您了解InetAddress的工具类,则很容易编写一个简单的工具类,如下:
上述实施是否有问题?
当然,没有问题。带我的机器和Ali服务器执行它。如实输出预期的IP没有问题
该计算机执行后的屏幕截图如下:
阿里巴巴云机的屏幕截图执行如下:
再次问,真的没有问题吗?
在虚拟机中执行时,您可能会遇到此问题。屏幕截图如下:
进行简单的更改,获取IPv4的地址,源代码如下:
再次测试,输出如下:
导入Java.net。*;
导入java.util.enumeration;
公共类iputil {
公共静态最终字符串default_ip =“ 127.0.0.1”;
/**
*取决于第一台网卡的地址作为其内部网络IPv4地址,避免返回127.0.0.1
*
* @返回
*/
public static String getLocalipbyNetCard(){
尝试 {
(枚举
NetworkInterface item = e.nextlement();
for(Interfaceaddress地址:item.getInterfaceadDresses()){{){
ifm.isloopback()||!item.isup()){{{
constinue;
}
if(iddress.getAddress()instanceoffint4address){{{
indert4address inet4Address =(inet4Address)address.getAddress();
返回inet4address.gethostaddress();
}
}
}
返回intetAddress.getLocalhost()。gethostaddress();
} catch(socketException | unknownhostexception e){{{
投掷新的RuntimeException(E);
}
}
public static String getLocalip(){){
尝试 {
返回intetAddress.getLocalhost()。gethostaddress();
} catch(unknownothostexception e){{{
投掷新的RuntimeException(E);
}
}
}微信公共帐户:一个灰色博客