引言
IP地址在網絡編程中起着非常重要的作用,Java提供了很多方法來獲取本地IP地址。
正文
一、使用InetAddress方法獲取本地IP
Java中提供了InetAddress類來獲取IP地址。它是用來表示不同類型的網絡地址的類,包括IP地址。我們可以通過InetAddress.getLocalHost()方法獲取本地主機的IP地址和主機名。
public static void main(String[] args) throws UnknownHostException {
InetAddress inetAddress = InetAddress.getLocalHost();
System.out.println("本機IP地址:" + inetAddress.getHostAddress());
System.out.println("本機主機名:" + inetAddress.getHostName());
}
執行結果如下:
本機IP地址:192.168.1.111
本機主機名:localhost
需要注意的是,在InetAddress的實現中,getLocalHost()方法會經常去訪問DNS服務器,所以會有一點點耗時。
二、使用NetworkInterface方法獲取本地IP
除了使用InetAddress類,Java還提供了NetworkInterface類來獲取本地IP地址。NetworkInterface類提供了一些方法,可以用來獲取本機所有網絡接口的信息,包括IP地址和MAC地址。
public static void main(String[] args) throws SocketException, UnknownHostException {
Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = allNetInterfaces.nextElement();
Enumeration addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
ip = addresses.nextElement();
if (ip != null && ip instanceof Inet4Address) {
System.out.println("本機IP地址:" + ip.getHostAddress());
}
}
}
}
執行結果如下:
本機IP地址:127.0.0.1
本機IP地址:192.168.1.111
三、結論
通過以上兩種方法,我們可以很方便地獲取本機的IP地址。如果只需要獲取一個IP地址,使用InetAddress類就足夠了。如果需要獲取所有的IP地址,或者需要獲取網絡接口的信息,那麼就要使用NetworkInterface類。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/151727.html