先看一段代码:the IP address of the local host. 在大多数机器上都可以取到本机ip
InetAddress.getLocalHost().getHostAddress()
但是多网卡配置的时候,就悲剧了:下图这个机器使用上面的命令取回的是127.0.0.1。
用ifconfig看网卡:
这个时候就需要枚举多网卡判断了
Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
然后结合IP4的地址段做区分,主要利用以下两个方法:
ip.isSiteLocalAddress() && !ip.isLoopbackAddress()
最终方法如下(从网上copy来的..)
/**
* 多IP处理,可以得到最终ip
* @return
*/
public static String getIp() {
String localip = null;// 本地IP,如果没有配置外网IP则返回它
String netip = null;// 外网IP
try {
Enumeration<NetworkInterface> netInterfaces = NetworkInterface
.getNetworkInterfaces();
InetAddress ip = null;
boolean finded = false;// 是否找到外网IP
while (netInterfaces.hasMoreElements() && !finded) {
NetworkInterface ni = netInterfaces.nextElement();
Enumeration<InetAddress> address = ni.getInetAddresses();
while (address.hasMoreElements()) {
ip = address.nextElement();
// System.out.println(ni.getName() + ";" + ip.getHostAddress()
// + ";ip.isSiteLocalAddress()="
// + ip.isSiteLocalAddress()
// + ";ip.isLoopbackAddress()="
// + ip.isLoopbackAddress());
if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {// 外网IP
netip = ip.getHostAddress();
finded = true;
break;
} else if (ip.isSiteLocalAddress()
&& !ip.isLoopbackAddress()
&& ip.getHostAddress().indexOf(":") == -1) {// 内网IP
localip = ip.getHostAddress();
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
if (netip != null && !"".equals(netip)) {
return netip;
} else {
return localip;
}
}
- 大小: 10.1 KB
分享到:
相关推荐
非常清楚的介绍了如何使用Java获取本机IP地址,有源码
Java 获取本机IP~~~~~~~~~~~~~~~~~~~~~~~~~~~
纯JAVA实现修改本地IP地址(swing界面版),支持存储多个预设IP,可以切换使用(IO流实现),支持删除。
此类只是简单的获取你的本机IP,如果想获取本机公网IP查看我其他的资源。
此java类获取的是公网的IP地址,如想获取本机IP但不是公网IP查看我其他资源。
通过url链接到一个网址,该网址返回自己的ip地址(通过代理服务器访问)
java程序 获取ip某个主机地址 获得本机的ip地址 java程序 获取ip某个主机地址 获得本机的ip地址
Java获取本机MAC地址IP地址主机名
Java ip 地址排序Java ip 地址排序Java ip 地址排序Java ip 地址排序
Java获得本机IP自动上传ftp
java获取本机IP
Java中获取IP地址,主机名称,网卡地址
Java获取客户端真实IP地址
拿到本机正在使用网络的ip排除虚机的ip地址,mac ipv4 ipv6 工作组等清册有效有需要的可以下载试试-.-
java正则表达式验证IP地址
JAVA发送邮件和获取ip地址,测试时请先去SimpleMailSender类send方法设置自己发送邮件的邮箱和发送给哪个邮箱。
java 获取计算机名与IP地址 java 获取计算机名与IP地址 java 获取计算机名与IP地址
平易近人.只需要调用一下getOutNetIP方法就可以得到本机的外网IP地址 。还等什么那少年.快下载吧..哥的其他原创资源也是不错的噢哈哈
java获取当前主机的外网ip,简单方便。
面向中国大陆地区的 手机号码、电话号码、IP地址 归属地查询库。 IP地址库来源于 [ip2region](http://git.oschina.net/lionsoul/ip2region)。 手机号码段和电话号码区号信息来源于 [ip138](http://ip138.com/)。 # ...