Java:获取本机所有IP地址,内网IP
2017-03-13 15:06
344 查看
获取IP地址
Java代码如下:import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Enumeration; public class TestGetIP { public static void main(String[] args) { TestGetIP testGetIP = new TestGetIP(); testGetIP.printAddresses(); System.out.println("\n\n\n\n"); System.out.println(testGetIP.getIP()); } // 找一个合理的ipv4 public String getIP() { try { // 根据hostname找ip InetAddress address = InetAddress.getLocalHost(); if (address.isLoopbackAddress()) { Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces(); while (allNetInterfaces.hasMoreElements()) { NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement(); Enumeration<InetAddress> addresses = netInterface.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress ip = addresses.nextElement(); if (!ip.isLinkLocalAddress() && !ip.isLoopbackAddress() && ip instanceof Inet4Address) { return ip.getHostAddress(); } } } } return address.getHostAddress(); } catch (UnknownHostException e) { e.printStackTrace(); return null; } catch (SocketException e) { e.printStackTrace(); return null; } } // 所有网络接口 public void printAddresses() { try { Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces(); while (allNetInterfaces.hasMoreElements()) { NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement(); // 去除回环接口,子接口,未运行和接口 if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) { continue; } Enumeration<InetAddress> addresses = netInterface.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress ip = addresses.nextElement(); if (ip != null) { System.out.println("ip = " + ip.getHostAddress()); // ipv4 if (ip instanceof Inet4Address) { System.out.println("ipv4 = " + ip.getHostAddress()); if (ip.getHostAddress().startsWith("192") || ip.getHostAddress().startsWith("10") || ip.getHostAddress().startsWith("172") || ip.getHostAddress().startsWith("169")) { // 内网 } } } } } } catch (SocketException e) { System.err.println("Error when getting host ip address"+ e.getMessage()); } } }
相关文章推荐
- JAVA 获取本地所有的IP地址,多网卡多IP,单网卡多个IP
- C# 获取本机的所有ip地址,并过滤内网ip
- Java获取IP地址 IPUtil.getRemoteIp(request)
- Java-获得内网所有的IP地址
- java获取所有网卡和ip地址
- java 获取局域网中的所有主机名和IP地址
- 一段通过WebRTC获取客户端内网IP的js (无需java/ActiveX支持)
- Java获取客户端IP地址、MAC地址,根据IP获取地理位置信息代码
- java获取本机的所有ip地址 包括IPV6
- C#获取本机所有IP地址(包括局域网和本机外网IP)
- 获取本机所有IP java
- Java获取本机的内网IP和公网IP(通…
- java获取机器名及所有网卡IP
- JAVA 获取当前 内网 和 外网 的IP 地址
- java web在内网/局域网中访问,客户端主机ip获取
- JAVA 获取当前 内网 和 外网 的IP 地址
- 直接上一段用于内网获取本机ip地址的方法,更全面的可以先获取本机网络类型,在获取ip
- java获取客户端请求IP地址 获取公网ip
- 【Servlet】Javaweb中,利用新浪api接口,获取IP地址,并获取相应的IP归属地