主机上有多个网卡用java指定获取某一个网卡ip的问题
2017-08-09 12:02
2671 查看
前几天写过一个基于tomcat发邮件修改密码的功能,大致是这样:
点击修改密码按钮就发送一封邮件去指定账户的邮箱,邮箱里有个超链接和验证码,超链接打开进入修改密码页面。之前能用,但是今天我的笔记本打开了猎豹免费wifi,造成有两个网卡都被激活,如下图:
发给邮箱的超链接的ip地址是通过InetAddress.getLocalHost().getHostAddress()获取,此时得到的是专用网络的ip地址,而我的tomcat是在公用网络上运行的,两个ip不一致,此超链接无法跳转到修改密码页面。然后我直接写了一次测试类发现,在我笔记本上用这个方法获取的ip地址为免费wifi激活的专有网络地址,把免费wifi关掉之后就能取到公用网络即(以太网)的ip地址。
研究了一上午,写了一个方法可获取到本机的所有的IP。
但还是没有办法指定获取哪个ip地址。先把问题留在这里。以后找到解决办法再来更新
点击修改密码按钮就发送一封邮件去指定账户的邮箱,邮箱里有个超链接和验证码,超链接打开进入修改密码页面。之前能用,但是今天我的笔记本打开了猎豹免费wifi,造成有两个网卡都被激活,如下图:
发给邮箱的超链接的ip地址是通过InetAddress.getLocalHost().getHostAddress()获取,此时得到的是专用网络的ip地址,而我的tomcat是在公用网络上运行的,两个ip不一致,此超链接无法跳转到修改密码页面。然后我直接写了一次测试类发现,在我笔记本上用这个方法获取的ip地址为免费wifi激活的专有网络地址,把免费wifi关掉之后就能取到公用网络即(以太网)的ip地址。
import java.net.InetAddress; import java.net.NetworkInterface; import java.net.UnknownHostException; import java.util.Enumeration; public class test { public static void main(String[] args) throws UnknownHostException { System.out.println("本机IP地址为:" +InetAddress.getLocalHost().getHostAddress()); } }
研究了一上午,写了一个方法可获取到本机的所有的IP。
public static InetAddress getLocalHostIp() throws SocketException{ 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()); break; } } } return ip; }
但还是没有办法指定获取哪个ip地址。先把问题留在这里。以后找到解决办法再来更新
相关文章推荐
- 今天研究了一个有趣的网络问题:双网卡DHCP(动态获取IP)
- 用GNS3和主机搭建一个实验环境来验证单网卡多IP多路由的可行性
- Java 获取客户端ip返回127.0.0.1问题
- 一个小的知识点关于java获取系统时间的问题
- Java连接sqlserver2005到主机的TCP/IP连接失败问题
- Java 抓取网页内容,获取指定服务器IP
- 对于一个网卡绑定多个IP的问题。
- Java连接sqlserver2005到主机的TCP/IP连接失败问题
- 针对WebService使用Service类获取Port类的一个参数问题(java.net.MalformedURLException)
- java代码 调用dos的ipconfig /all 命令,获取网卡详细信息
- 树莓派Linux下无线网卡无法获取IP,不识别,等问题
- Linux 下获取LAN中指定IP的网卡的MAC(物理地址)
- Java连接sqlserver2005到主机的TCP/IP 连接失败问题
- java 获取当前主机IP 主机名 MAC 操作系统信息
- JAVA代码:得到指定主机的所有IP
- Linux 下获取LAN中指定IP的网卡的MAC(物理地址)
- Java 抓取网页内容,获取指定服务器IP
- 获取客户端IP需要注意的一个问题
- C#获取指定IP的主机名
- Java连接sqlserver2005到主机的TCP/IP 连接失败问题