关于同一局域网中,获取的IP非本地真实IP的问题。
目录结构
前言
本博客结合 java 代码如下:
/**
* 获取本机的内网ip地址
*
* @return
* @throws SocketException
*/
public static String getInnetIp() throws SocketException {
String localip = null; // 本地IP,如果没有配置外网IP则返回它
String netip = null; // 外网IP
Enumeration<NetworkInterface> netInterfaces;
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();
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();
}
}
}
System.out.println("=================== ip ======================");
System.out.println("内网:" + localip);
System.out.println("外网:" + netip);
System.out.println("=================== ip ======================");
if (netip != null && !"".equals(netip)) {
// 返回内网地址
return localip;
// 返回外网地址
// return netip;
} else {
// 返回内网地址
return localip;
}
}
查看是否开启了电脑上的 “投屏” 功能
解决办法:
关闭投屏功能即可。
禁用除 “WLAN” 外的其他 “本地连接”
- 看图。【禁用 “被代理的IP” 】
禁用 “本地连接 * 2 ” 网卡即可。【这里 “本地连接 * 2” 是电脑 “投屏” 功能的网卡。】
- 开启被禁用的网卡。【记住上图 “本地连接 * 2 ” 的 网卡名称。】
- 打开设备管理器。
- 找到 “网络适配器”。
- 把禁用的网卡开启即可。【右击鼠标 点击 “启用设备” 即可】