private static InetAddress getLocalHostLANAddress() throws UnknownHostException {
        try {
            InetAddress candidateAddress = null;
            // 遍历所有的网络接口
            for (Enumeration ifaces = NetworkInterface.getNetworkInterfaces(); ifaces.hasMoreElements();) {
                NetworkInterface iface = (NetworkInterface) ifaces.nextElement();
                // 在所有的接口下再遍历IP
                for (Enumeration inetAddrs = iface.getInetAddresses(); inetAddrs.hasMoreElements();) {
                    InetAddress inetAddr = (InetAddress) inetAddrs.nextElement();
                    if (!inetAddr.isLoopbackAddress()) {// 排除loopback类型地址
                        if (inetAddr.isSiteLocalAddress()) {
                            // 如果是site-local地址,就是它了
                            return inetAddr;
                        } else if (candidateAddress == null) {
                            // site-local类型的地址未被发现,先记录候选地址
                            candidateAddress = inetAddr;
                        }
                    }
                }
            }
            if (candidateAddress != null) {
                return candidateAddress;
            }
            // 如果没有发现 non-loopback地址.只能用最次选的方案
            InetAddress jdkSuppliedAddress = InetAddress.getLocalHost();
            if (jdkSuppliedAddress == null) {
                throw new UnknownHostException("The JDK InetAddress.getLocalHost() method unexpectedly returned null.");
            }
            return jdkSuppliedAddress;
        } catch (Exception e) {
            UnknownHostException unknownHostException = new UnknownHostException(
                    "Failed to determine LAN address: " + e);
            unknownHostException.initCause(e);
            throw unknownHostException;
        }
    }

  • 127.xxx.xxx.xxx 属于"loopback" 地址,即只能你自己的本机可见,就是本机地址,比较常见的有127.0.0.1;
  • 192.168.xxx.xxx 属于private 私有地址(site local address),属于本地组织内部访问,只能在本地局域网可见。同样10.xxx.xxx.xxx、从172.16.xxx.xxx 到 172.31.xxx.xxx都是私有地址,也是属于组织内部访问;
  • 169.254.xxx.xxx 属于连接本地地址(link local IP),在单独网段可用
  • 从224.xxx.xxx.xxx 到 239.xxx.xxx.xxx 属于组播地址
  • 比较特殊的255.255.255.255 属于广播地址
  • 除此之外的地址就是点对点的可用的公开IPv4地址

JAVA获取本机IP地址相关推荐

  1. 用java获取本机IP地址

    在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一下.突然之间很想把自己的IP地址给获取了,虽然用系统自带命令可以得到,但自己想写一个程序获取一下,到网上搜索了一下ja ...

  2. java获取本机ip地址_代码片段:获取系统所有IP

    问题 在Windows系统中,可以支持多个网卡,比如有线的以太网卡,无线网卡,虚拟网卡等.如下图所示: 每一张网卡由不同的类型,也可以分别被用户启用或禁用. 对于单独一张给定的网卡,其IP地址可以是D ...

  3. 1.Java获取本机IP地址,主机名,域名

    1.如何在程序中获取本机的IP地址,主机名以及域名呢? 在java中,我们可以利用java.net.InetAddress这个类来实现. InetAddress 类提供了操作 IP 地址的各种方法.该 ...

  4. java 本机局域网真实ip_Java获取本机ip地址,并扫描本机所在局域网的电脑设备

    Java获取本机IP地址,并根据IP地址的网段,扫描局域网里面的电脑设备; import java.io.IOException; import java.net.Inet4Address; impo ...

  5. Java 网络实例一(获取指定主机的IP地址、查看端口是否已使用、获取本机ip地址及主机名、获取远程文件大小)

    获取指定主机的IP地址 import java.net.InetAddress; import java.net.UnknownHostException;public class GetIP {pu ...

  6. Java 程序获取本机 ip 地址

    Java程序获取本机ip地址: host_ip_list = new ArrayList<String>(); try {for (NetworkInterface networkInte ...

  7. qt获取本机全部ipv4_QT5下获取本机IP地址、计算机名、网络连接名、MAC地址、子网掩码、广播地址...

    获取主机名称 /* * 名称:get_localmachine_name * 功能:获取本机机器名称 * 参数:no * 返回:QString */ QString CafesClient::get_ ...

  8. java获取客户端的IP地址工具类

    java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...

  9. 常识-java获取本机ipv6地址以及关闭临时ipv6地址

    关闭临时ipv6地址 临时ipv6有助于本机安全,然而有时用不到,比如用其进行长久的ftp链接,随时待命是不合适的 右键管理员cmd,输入命令关闭临时ipv6 netsh interface ipv6 ...

  10. Go 学习笔记(79)— Go 标准库 net(获取本机IP地址)

    1. 获取本机 IP 地址 package mainimport ("fmt""net" )// 获取本机网卡IP func getLocalIP() (ipv ...

最新文章

  1. JAVA-JSP内置对象
  2. nginx反向代理,实现负载均衡
  3. python 如何判断一组数据是否符合正态分布
  4. qt中解析json字符串的时候出现错误missingNameSeperator
  5. sublime Text3安装及配置与解决安装插件失败
  6. Curie%20Module有什么用
  7. python重定向反爬虫_高效实用http爬虫代理ip之盘点一些网站的反爬虫机制
  8. kafka 的structured stream 总结
  9. 专访刘遄:不仅仅是一名技术知识的搬运工
  10. 从零开始设计一款APP之Android设计规范篇
  11. 使用 Docker 部署的微服务在 Nacos 里注册成内网地址 导致无法微服务间互相调用的解决方案...
  12. matlab绘正态/卡方/t/F分布概率密度图
  13. Python汉字转拼音(xpinyin)
  14. leetcode 1219. 黄金矿工
  15. PON光通道损耗的计算
  16. vue结合elementUI,MinUi
  17. VX_Ipad协议和Mac协议
  18. flask常用的第三方平台,第三方库,扩展包
  19. 61-Java-分布式开发框架Dubbo
  20. 安卓开发 高德地图 marker 点击移动位置_高德地图AR导航功能上线 ~

热门文章

  1. Python 自动化 30 个实用案例
  2. C语言单片机串转并,74ls164与单片机的串并转换(串转并\串进并出)
  3. 云架构师进阶攻略(3)
  4. Android获取地理坐标,Android 通过经纬度获取地理位置信息
  5. 单点登录系统和传统登录的区别
  6. 中国十大骨干网,了解互联网的真实结构
  7. 微信小程序关于map地图
  8. 低版本向日葵本机识别码和验证码提取
  9. 【区块链开发入门】(四) Truffle详解篇1
  10. 5W1h分析法分析---play框架