利用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



發佈了47 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章