java.net.InetAddress 封裝 IP 位址與主機名稱,提供靜態工廠方法解析網域名稱,是 Java 網路程式設計的基礎元件。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class NsLookup {
static public void main(String[] args) {
try {
// 從命令列參數取得網域名稱
InetAddress address = InetAddress.getByName(args[0]);
// 輸出:網域名稱: IP位址
System.out.println(args[0] + ": " + address.getHostAddress());
} catch (UnknownHostException uhe) {
System.err.println("Unable to find: " + args[0]);
}
}
}
$ java NsLookup www.google.com www.google.com: 142.250.190.46 $ java NsLookup localhost localhost: 127.0.0.1
| 方法 | 功能 | 回傳型別 |
|---|---|---|
getByName(String host) | 根據主機名稱/IP 字串取得 InetAddress | InetAddress |
getHostAddress() | 取得 IP 位址字串(點分十進制) | String |
getHostName() | 取得主機名稱 | String |
getAddress() | 取得原始 IP 位元組陣列(4 位元組 IPv6 16 位元組) | byte[] |
getAllByName(String host) | 取得所有解析位址(負載平衡、多 IP) | InetAddress[] |
getLocalHost() | 取得本機 InetAddress | InetAddress |
isReachable(int timeout) | 測試主機可達性(ICMP/TCP) | boolean |
getHostAddress():回傳人類可讀字串「192.168.1.1」,適合輸出顯示getAddress():回傳 byte[] 原始位元組,適合網路封包組裝、位元運算public class AdvancedLookup {
public static void main(String[] args) throws Exception {
String host = "www.google.com";
// 1. 取得所有 IP(CDN、負載平衡常有多個)
InetAddress[] addresses = InetAddress.getAllByName(host);
System.out.println(host + " 解析到 " + addresses.length + " 個 IP:");
for (InetAddress addr : addresses) {
System.out.println(" " + addr.getHostAddress());
}
// 2. 可達性測試(需權限,部分環境受限)
for (InetAddress addr : addresses) {
boolean reachable = addr.isReachable(3000); // 3 秒超時
System.out.println(" " + addr.getHostAddress() + " reachable: " + reachable);
}
// 3. 本機資訊
InetAddress local = InetAddress.getLocalHost();
System.out.println("本機主機名:" + local.getHostName());
System.out.println("本機 IP:" + local.getHostAddress());
}
}
UnknownHostException:DNS 解析失敗(網域不存在、DNS 故障、離線)SecurityException:isReachable() 需網路權限(SecurityManager 環境)InetAddress 同時支援 IPv4 (Inet4Address) 與 IPv6 (Inet6Address),getAddress() 回傳 4 或 16 位元組陣列,程式碼無需修改即相容雙協定。
java.net.http.HttpClient 內建 DNS 解析與連線管理掌握 InetAddress 是理解 Java 網路層基礎,進而驅動 HTTP Client、gRPC、微服務註冊發現等上層應用的關鍵。