Java程序通常需要獲取服務器IP地址來確保應用程序能夠準確地與之通信,這篇文章將為您提供Java獲取服務器IP的幾種方法。我們將從舊的Java版本開始,向您介紹一些基於網絡的技術,並介紹在舊版本和新版本的Java編程環境中如何實現。
一、使用InetAddress類獲取服務器IP
Java SE提供了InetAddress類,該類表示互聯網協議(IP)地址。InetAddress類提供了靜態方法getByName(),該方法接受主機名或IP地址字符串,並返回InetAddress對象,在InetAddress對象中包含與指定主機名或IP地址相對應的IP地址。
下面使用InetAddress的getLocalHost()方法,演示如何獲取當前服務器的IP地址:
import java.net.*; public class GetServerIP { public static void main(String[] args) throws UnknownHostException { InetAddress ip = InetAddress.getLocalHost(); System.out.println(ip.getHostAddress()); } }
該程序將會輸出當前服務器的IP地址。
二、使用Socket類獲取服務器IP
在Java中,Socket類用於建立連接到網絡應用程序,可以通過Socket類獲取服務器的IP地址和端口號。Socket類的構造函數包含兩個參數:服務器主機名和端口號,在創建Socket對象時這兩個參數是必需的。
下面是一個簡單的Java程序,它連接到一個遠程服務器,並獲取該服務器的IP地址和端口號:
import java.io.IOException; import java.net.*; public class GetServerIPUsingSocket { public static void main(String[] args) throws IOException { InetAddress address = InetAddress.getByName("www.baidu.com"); Socket socket = new Socket(address, 80); System.out.println("Connected to server!"); System.out.println("Server IP address: " + socket.getInetAddress()); System.out.println("Server port number: " + socket.getPort()); socket.close(); } }
該程序將會連接到百度服務器,並輸出服務器的IP地址和端口號。
三、使用NetworkInterface類獲取本地IP
如果在服務器上部署的Java應用程序需要獲取本地IP地址而不是服務器IP地址,可以使用NetworkInterface類。 NetworkInterface類表示網絡接口,可以用於查詢相應的IP地址和硬件地址。
下面是一個簡單的Java程序,演示如何使用NetworkInterface類獲取本地IP地址:
import java.net.*; import java.util.*; public class GetLocalIP { public static void main(String[] args) throws SocketException { Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface currentInterface = interfaces.nextElement(); if (!currentInterface.isUp() || currentInterface.isLoopback() || currentInterface.isVirtual()) { continue;} Enumeration addresses = currentInterface.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress currentAddress = addresses.nextElement(); if (currentAddress.isLoopbackAddress() || !currentAddress.getHostAddress().contains(":")) { System.out.println(currentAddress.getHostAddress()); } } } } }
該程序將會輸出本地IP地址,如果本地IP地址是127.0.0.1,將會被忽略。
四、小結
以上就是Java獲取服務器IP的幾種方法,從簡單的InetAddress類到使用Socket類,再到NetworkInterface類,您可以根據實際情況使用任一種方法來獲取所需的IP地址。
代碼示例:https://github.com/lulu131206/GetServerIPDemo
原創文章,作者:JZDA,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/143717.html