Java 擷取ip地址和網路介面

來源:互聯網
上載者:User

Java 擷取ip地址和網路介面

網路相關對象在java.net包中。

1.擷取主機對象InetAddress

//擷取本地主機對象InetAddress host = InetAddress.getLocalHost();//根據ip地址或主機名稱擷取主機對象,以主機名稱擷取主機時需要DNS解析InetAddress host = InetAddress.getByName("192.168.100.124");InetAddress host = InetAddress.getByName("www.baidu.com");

2.擷取主機對象的ip地址和主機名稱(需要dns解析主機名稱)

host.getHostAddress();host.getHostName();

3.擷取本機所有介面NetworkInterface並遍曆

//返回資料類型為EnumerationEnumeration<NetworkInterface> enu = NetworkInterface.getNetworkInterfaces();while(enu.hasMoreElements){    NetworkInterface inet = enu.nextElement();    String intName = inet.getName();}

由於一個介面上可能有多個子介面(輔助ip,如eth0:1),因此根據某個介面,可以得到該介面的所有ip地址枚舉集合(同時包括Ipv4和ipv6介面)。

Enumeration<InetAddress> net_list = inet.getInetAddresses();while(net_list.hasMoreElements){    InetAddress net = net_list.nextElement();    String ip = net.getHostAddress();}

可以使用Collections.list()方法將Enumeration類型轉換為ArrayList集合的資料結構,然後使用Itreator遍曆器遍曆。

以下是擷取本機所有介面名稱和這些介面上的ipv4地址的方法(適用於Windows和Linux)。

import java.net.*;import java.util.*;public class EnumDemo {    public static void main(String[] args) {        try {            //擷取所有介面,並放進枚舉集合中,然後使用Collections.list()將枚舉集合轉換為ArrayList集合            Enumeration<NetworkInterface> enu = NetworkInterface.getNetworkInterfaces();            ArrayList<NetworkInterface> arr = Collections.list(enu);            for(Iterator<NetworkInterface> it = arr.iterator();it.hasNext();) {                NetworkInterface ni = it.next();                String intName = ni.getName();   //擷取介面名                //擷取每個介面中的所有ip網路介面集合,因為可能有子介面                ArrayList<InetAddress> inets = Collections.list(ni.getInetAddresses());                for(Iterator<InetAddress> it1 = inets.iterator();it1.hasNext();) {                    InetAddress inet = it1.next();                    //只篩選ipv4地址,否則會同時得到Ipv6地址                    if(inet instanceof Inet4Address) {                        String ip = inet.getHostAddress();                        System.out.printf("%-10s %-5s %-6s %-15s\n", "InetfaceName:",intName,"| IPv4:",ip);                    }                }            }        } catch (SocketException s) {            s.printStackTrace();        }    }}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.