iamdayan 2022-02-09 12:20 采纳率: 33.3%
浏览 39

在windows和java上获取本机ip的问题

我现在在windows平台使用idea编写javaweb后端代码,并打算后期将项目移植到linux系统的阿里云服务器中。但是我在试图获取本机ip时遇到了麻烦。
我用来获取ip地址的方法如下:


public static String getIpAddress() {
        try {
            Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
            InetAddress ip = null;
            while (allNetInterfaces.hasMoreElements()) {
                NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
                if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {
                    continue;
                } else {
                    Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
                    while (addresses.hasMoreElements()) {
                        ip = addresses.nextElement();
                        if (ip != null && ip instanceof Inet4Address) {
                            return ip.getHostAddress();
                        }
                    }
                }
            }
        } catch (Exception e) {
            System.err.println("IP地址获取失败" + e.toString());
        }
        return "";
    }

但是这串代码返回的不是我想要的ip地址。这是我的电脑的几个ip地址:

img

框选的是我想要的ip地址。因为我在使用android前端做测试,手机和电脑都是连同一个wifi,上面方法返回的ip地址我的手机无法访问,请问有什么办法可以解决吗?

  • 写回答

3条回答 默认 最新

  • a1767028198 2022-02-09 13:12
    关注

    多网卡的情况,像nacos,eureka这类开源软件都没做到完美匹配到你想要的ip。那还不如做成配置项,这样就也能解决你的问题

    评论

报告相同问题?

问题事件

  • 创建了问题 2月9日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据