在Java中尋找URL的IP位址
1. 概述
網際網路通訊協定位址 - IP - 是分配給連接到電腦網路的每個裝置的唯一識別碼。它允許設備透過互聯網相互通信。
在本教學中,我們將探討如何在 Java 中尋找 URL 的 IP 位址。
2. IP 位址的類型
IP 位址有兩個主要版本:IPV4 和 IPV6。 IPv4 由 32 位元組成,由用句點分隔的四個數字表示,例如192.168.1.1.
IPv6 使用 128 位,顯示以冒號分隔的八組十六進位數字,例如2001:0db8:85a3:0000:0000:8a2e:0370:7334.
我們將重點放在 IPv4。
3. 尋找IP位址的常用方法
現在,讓我們深入了解查找 URL 的 IP 位址的常用方法。
3.1.使用InetAddress
類別
InetAddress
類別提供了將主機名稱解析為 IP 位址的簡單方法。我們將為 URL 建立一個字串,並使用InetAddress.getByName()
方法來解析它。最後,我們將使用getHostAddress()
方法來擷取 IP 位址。
讓我們深入研究程式碼範例:
String getByInetAddress(String urlString) throws UnknownHostException {
InetAddress ip = InetAddress.getByName(urlString);
return ip.getHostAddress();
}
InetAddress.getByName(urlString)
將 URL 作為參數並將其解析為 IP 位址。 getHostAddress()
以可讀格式擷取 IP 位址。
為了確保我們的方法正確運作,讓我們編寫一個簡單的單元測試:
@Test
void givenValidURL_whenGetByInetAddress_thenReturnAValidIPAddress() throws UnknownHostException {
URLIPAddress urlipAddress = new URLIPAddress();
assertTrue(validate(urlipAddress.getByInetAddress("www.example.com")));
}
3.2.使用**套接字連接**
接下來,讓我們看看如何使用套接字連接來尋找本地 IP 位址。此方法可確保我們獲得系統與外部伺服器通訊時所使用的準確 IP 位址。透過建立與外部伺服器的套接字連接,我們可以準確地確定該特定連接正在使用哪個 IP 位址。
這是一個簡單的程式碼範例:
String getBySocketConnection(String urlString) throws IOException {
try (Socket socket = new Socket()) {
socket.connect(new InetSocketAddress(urlString, 80));
return socket.getLocalAddress().getHostAddress();
}
}
我們連接到連接埠80
上的 URL。此連線可協助我們確定我們的機器在存取網際網路時使用哪個本機 IP 位址。
Socket
類別中的getLocalAddress()
方法取得與此連線關聯的 IP 位址。最後,我們使用getHostAddress()
列印 IP 位址,這會以簡單的字串形式提供 IP。
為了確保getBySocketConnection()
方法正常運作,我們可以編寫一個連接到google.com
簡單單元測試:
@Test
void givenValidURL_whenGetBySocketConnection_thenReturnAValidIPAddress() throws IOException {
URLIPAddress urlipAddress = new URLIPAddress();
assertTrue(validate(urlipAddress.getBySocketConnection("google.com")));
}
URLIPAddress
的實例包含我們的方法。此測試呼叫getBySocketConnection()
方法,傳遞“google.com”
作為目標 URL。此方法傳回本機 IP 位址。 validate()
方法檢查傳回的字串是否採用有效的 IP 位址格式(例如192.168.1.1
)。 assertTrue()
斷言確保結果確實有效。
3.3.使用第三方函式庫
最後,讓我們看看如何使用第三方函式庫。有時,我們可能需要 Java 標準函式庫提供以外的額外彈性或功能。 Apache Commons Lang、Google Guava 或 OkHttp 等函式庫可以方便地滿足更複雜的需求。
例如:
- Apache Commons Lang :提供用於處理各種 Java 物件的實用程式
- Google Guava :提供高度優化的實用方法和集合
- OkHttp :適用於 Android 和 Java 的強大 HTTP 用戶端,通常用於發出網路請求
這些函式庫可以簡化各種任務,包括網路操作,使我們的程式碼更乾淨、更易於維護。
4. 結論
在 Java 中尋找 URL 的 IP 位址可以透過多種方式完成。無論我們使用InetAddress
或Socket
連接,還是利用第三方函式庫,每種方法都有其優點。了解這些選項使我們能夠選擇最適合我們特定需求的方法。
本文中提到的所有程式碼片段都可以 在 GitHub 上找到。