您好,登錄后才能下訂單哦!
java.net包
大家應該都知道,網絡相關對象在java.net包中,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并遍歷
//返回數據類型為Enumeration Enumeration<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(); } } }
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。