利用JAVA接口获取本机IP地址
2017-08-02 15:51
295 查看
public static InetAddress getFirstNonLoopbackAddress(boolean preferIpv4, boolean preferIPv6) throws SocketException {
Enumeration en = NetworkInterface.getNetworkInterfaces();
while (en.hasMoreElements()) {
NetworkInterface i = (NetworkInterface) en.nextElement();
for (Enumeration en2 = i.getInetAddresses(); en2.hasMoreElements();) {
InetAddress addr = (InetAddress) en2.nextElement();
if (!addr.isLoopbackAddress()) {
if (addr instanceof Inet4Address) {
if (preferIPv6) {
continue;
}
return addr;
}
if (addr instanceof Inet6Address) {
if (preferIpv4) {
continue;
}
return addr;
}
}
}
}
return null;
}
//该方法是从OverStackflow上找到的,编写的很巧妙,输入的两个boolean参数,若想获得IPv4则输入true,false,反之则获得IPv6。
Demo3-4 测试本机的IP地址
package com.upc.upcgrid.guan.network.chapter03;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class NetworkInterfaceTest2 {
public static void main(String[] args) throws SocketException {
Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
for(;nis.hasMoreElements();)
{
NetworkInterface ni = nis.nextElement();
Enumeration<InetAddress> ias = ni.getInetAddresses();
for(;ias.hasMoreElements();)
{
InetAddress ia = ias.nextElement();
if(ia instanceof Inet4Address && !ia.getHostAddress().equals("127.0.0.1"))
{
System.out.println("ip v4 : "+ia);
}else if(ia instanceof Inet6Address && !ia.equals(""))
{
System.out.println("ip v6 : "+ ia);
}
}
}
}
}
Demo3-4的执行结果:
Configuration3-1 下的执行结果:
ip v4 : /202.194.158.128
Configuration3-2下的执行结果:
ip v6 : /fe80:0:0:0:2e0:4cff:fe3d:c273%2
ip v6 : /2001:da8:7006:8003:2e0:4cff:fe3d:c273%2
ip v4 : /202.194.158.184
ip v6 : /0:0:0:0:0:0:0:1%1
Enumeration en = NetworkInterface.getNetworkInterfaces();
while (en.hasMoreElements()) {
NetworkInterface i = (NetworkInterface) en.nextElement();
for (Enumeration en2 = i.getInetAddresses(); en2.hasMoreElements();) {
InetAddress addr = (InetAddress) en2.nextElement();
if (!addr.isLoopbackAddress()) {
if (addr instanceof Inet4Address) {
if (preferIPv6) {
continue;
}
return addr;
}
if (addr instanceof Inet6Address) {
if (preferIpv4) {
continue;
}
return addr;
}
}
}
}
return null;
}
//该方法是从OverStackflow上找到的,编写的很巧妙,输入的两个boolean参数,若想获得IPv4则输入true,false,反之则获得IPv6。
Demo3-4 测试本机的IP地址
package com.upc.upcgrid.guan.network.chapter03;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class NetworkInterfaceTest2 {
public static void main(String[] args) throws SocketException {
Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
for(;nis.hasMoreElements();)
{
NetworkInterface ni = nis.nextElement();
Enumeration<InetAddress> ias = ni.getInetAddresses();
for(;ias.hasMoreElements();)
{
InetAddress ia = ias.nextElement();
if(ia instanceof Inet4Address && !ia.getHostAddress().equals("127.0.0.1"))
{
System.out.println("ip v4 : "+ia);
}else if(ia instanceof Inet6Address && !ia.equals(""))
{
System.out.println("ip v6 : "+ ia);
}
}
}
}
}
Demo3-4的执行结果:
Configuration3-1 下的执行结果:
ip v4 : /202.194.158.128
Configuration3-2下的执行结果:
ip v6 : /fe80:0:0:0:2e0:4cff:fe3d:c273%2
ip v6 : /2001:da8:7006:8003:2e0:4cff:fe3d:c273%2
ip v4 : /202.194.158.184
ip v6 : /0:0:0:0:0:0:0:1%1
相关文章推荐
- JAVA服务器端获取客户端远程地址,根据IP获取远程地址,各IP地址查询接口比较
- java 调用百度地址匹配接口获取经纬度坐标
- java获取mac地址-屏蔽ip封mac地址
- Linux下Java获取本机IP地址
- 利用SVI建立vlan间路由并使用dhcp动态获取接口地址
- 利用webservice查询ip的物理地址 java实现
- 利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
- java获取本机ip地址
- android 根据网络来获取外网ip地址及国家,地区的接口
- java获取mac地址-屏蔽ip封mac地址
- php利用新浪接口查询ip获取地理位置示例
- 用java获取本机IP地址
- java获取mac地址-屏蔽ip封mac地址
- java利用正则表达式获取一个网页中的所有邮箱地址
- java程序获取IP、MAC相关地址属性
- <转载>利用dns类和WMI规范获取IP及MAC地址
- java 获取客户端ip mac地址
- java获取mac地址-屏蔽ip封mac地址