利用JAVA接口获取本机IP地址

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值