溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java 中怎么利用Socket編程識別網絡主機

發布時間:2021-08-10 16:20:13 來源:億速云 閱讀:208 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關Java 中怎么利用Socket編程識別網絡主機,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

獲取主機地址信息

在Java中我們使用InetAddress類來代表目標網絡地址,包括主機名和數字類型的地址信息,并且InetAddress的實例是不可變的,每個實例始終指向一個地址。InetAddress類包含兩個子類,分別對應兩個IP地址的版本:

  • Inet4Address

  • Inet6Address

我們通過前面的筆記可以知道:IP地址實際上是分配給主機與網絡之間的連接,而不是主機本身,NetworkInterface類提供了訪問主機所有接口的信息的功能。下面我們通過一個簡單的示例程序來學習如何獲取網絡主機的地址信息:

import java.net.*;   import java.util.Enumeration;      public class InetAddressExample {          /**        * @param args   */      public static void main(String[] args) {           // TODO Auto-generated method stub           try {               // 獲取主機網絡接口列表               Enumeration<NetworkInterface> interfaceList = NetworkInterface                       .getNetworkInterfaces();               // 檢測接口列表是否為空,即使主機沒有任何其他網絡連接,回環接口(loopback)也應該是存在的               if (interfaceList == null) {                   System.out.println("--沒有發現接口--");               } else {                   while (interfaceList.hasMoreElements()) {                       // 獲取并打印每個接口的地址                       NetworkInterface iface = interfaceList.nextElement();                       // 打印接口名稱                       System.out.println("Interface" + iface.getName() + ";");                       // 獲取與接口相關聯的地址                       Enumeration<InetAddress> addressList = iface                               .getInetAddresses();                       // 是否為空                       if (!addressList.hasMoreElements()) {                           System.out.println("\t(沒有這個接口相關的地址)");                       }                       // 列表的迭代,打印出每個地址                       while (addressList.hasMoreElements()) {                           InetAddress address = addressList.nextElement();                           System.out                                   .print("\tAddress"                                          + ((address instanceof Inet4Address ? "(v4)"                                                  : address instanceof Inet6Address ? "v6"                                                          : "(?)")));                           System.out.println(":" + address.getHostAddress());                       }                   }               }           } catch (SocketException se) {               System.out.println("獲取網絡接口錯誤:" + se.getMessage());           }           // 獲取從命令行輸入的每個參數所對應的主機名和地址,迭代列表并打印           for (String host : args) {               try {                   System.out.println(host + ":");                   InetAddress[] addressList = InetAddress.getAllByName(host);                   for (InetAddress address : addressList) {                       System.out.println("\t" + address.getHostName() + "/"                              + address.getHostAddress());                   }               } catch (UnknownHostException e) {                   System.out.println("\t無法找到地址:" + host);               }           }          }   }

查看運行效果:

Java 中怎么利用Socket編程識別網絡主機

上述就是小編為大家分享的Java 中怎么利用Socket編程識別網絡主機了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女