用java获取本机IP地址
在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一下.突然之间很想把自己的IP地址给获取了,虽然用系统自带命令可以得到,但自己想写一个程序获取一下,到网上搜索了一下java获取本机IP地址的方法,结果居然发现没有一个是可以用的,气的我老人家吐血,
这些人闭着眼睛写程序,写完了就往网上发,也不测试一下,害的我以为自己RP问题,老是获取不到正确的IP地址,强烈谴责!!!
为了表示鄙视,现把网上找到的主要的两种方法的不足给指出一下
方法一(只能在Windows上使用,Linux平台就gei屁了):
try
{
System.out.println("本机的IP = " + InetAddress.getLocalHost());
} catch (UnknownHostException e)
{
e.printStackTrace();
}
在Linux下的执行结果是:本机的IP = xxx/127.0.1.1 (其中xxx是你的计算机名,偶这里马赛克了)
方法二(宣称可以在Linux下执行)
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;
}
}
从红色部分的代码可以看到,该代码对于获取到的第一个NetworkInterface的IP地址的获取,没有循环的获取,只是对第一个IP地址进行了处理,这样就导致了如果第一个IP地址不是一个
Inet4Address的地址而是一个< span
id="ArticleContent1_ArticleContent1_lblContent">Inet6Address,这个判断 ip.getHostAddress().indexOf(":")==-1将永远是false,这个if条件进不去呀,多害人,强烈鄙视!
不过方法二思路是对了,就是有些小毛病,让偶修改了一下,最终版的可以在 Linux下正确执行的代码如下:
Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while (allNetInterfaces.hasMoreElements())
{
NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
System.out.println(netInterface.getName());
Enumeration addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements())
{
ip = (InetAddress) addresses.nextElement();
if (ip != null && ip instanceof Inet4Address)
{
System.out.println("本机的IP = " + ip.getHostAddress());
}
}
}
用java获取本机IP地址相关推荐
- java获取本机ip地址_代码片段:获取系统所有IP
问题 在Windows系统中,可以支持多个网卡,比如有线的以太网卡,无线网卡,虚拟网卡等.如下图所示: 每一张网卡由不同的类型,也可以分别被用户启用或禁用. 对于单独一张给定的网卡,其IP地址可以是D ...
- 1.Java获取本机IP地址,主机名,域名
1.如何在程序中获取本机的IP地址,主机名以及域名呢? 在java中,我们可以利用java.net.InetAddress这个类来实现. InetAddress 类提供了操作 IP 地址的各种方法.该 ...
- java 本机局域网真实ip_Java获取本机ip地址,并扫描本机所在局域网的电脑设备
Java获取本机IP地址,并根据IP地址的网段,扫描局域网里面的电脑设备; import java.io.IOException; import java.net.Inet4Address; impo ...
- Java 网络实例一(获取指定主机的IP地址、查看端口是否已使用、获取本机ip地址及主机名、获取远程文件大小)
获取指定主机的IP地址 import java.net.InetAddress; import java.net.UnknownHostException;public class GetIP {pu ...
- Java 程序获取本机 ip 地址
Java程序获取本机ip地址: host_ip_list = new ArrayList<String>(); try {for (NetworkInterface networkInte ...
- qt获取本机全部ipv4_QT5下获取本机IP地址、计算机名、网络连接名、MAC地址、子网掩码、广播地址...
获取主机名称 /* * 名称:get_localmachine_name * 功能:获取本机机器名称 * 参数:no * 返回:QString */ QString CafesClient::get_ ...
- java获取客户端的IP地址工具类
java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...
- 常识-java获取本机ipv6地址以及关闭临时ipv6地址
关闭临时ipv6地址 临时ipv6有助于本机安全,然而有时用不到,比如用其进行长久的ftp链接,随时待命是不合适的 右键管理员cmd,输入命令关闭临时ipv6 netsh interface ipv6 ...
- Go 学习笔记(79)— Go 标准库 net(获取本机IP地址)
1. 获取本机 IP 地址 package mainimport ("fmt""net" )// 获取本机网卡IP func getLocalIP() (ipv ...
最新文章
- 花了2周时间收集汇总的大厂面经,节后准备跳槽的看过来!
- SQL语句在数据库中是如何执行的
- 根据数据库连接的java.sql.Connection获取数据库名称
- [NOI2012(bzoj2879)(vijos1726)]美食节 (费用流)
- 【备忘】XP欢迎页中隐藏用户名
- 如何打印出给定尺寸的方格_打印给定号码的表格| 8086微处理器
- spring 事物的级别_Spring 事务中的隔离级别有哪几种?
- flask-admin初次使用遇到的几个小问题(显示对象内存地址,编辑无法正确跳转)
- python深度学习机器学习必备的学习网站集合!
- 数学建模2-美国人口增长模型的确定
- java lambda排序
- 批量导出word中的清晰图片
- 除了压缩包加密,还有这些更好的文件加密方案
- 捋一捋DSP里的重叠保留法
- FME基础入门学习(四)
- 数据分析AB测试实战项目
- 史上最全的ubuntu服务器搭建环境教程~~~
- 面试学习+刷题笔记分享-屌丝的逆袭之路,2年5个月13天,从外包到拿下阿里offer
- 1-1 爬取搜狗搜索首页的页面源代码
- html 设置min height,HTML min-height用法总结
热门文章
- Android BroadCast
- WARNING [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web appli
- python语言实现冒泡算法(附代码)
- 自举开关为啥用NMOS管,不用PMOS管
- linux设置时间服务器
- 第八届中国云计算大会胜利启幕云计算产业进入应用迅速普及期
- 山西思诺腾讯云架构工程师TCA认证如何考取
- 计算机二级在线找答案,2016计算机二级试题及答案
- WMS和WMTS的区别
- 蚂蚁金服 Service Mesh 深度实践