在網絡通信中,IP地址是非常重要的標識符,它能夠唯一標識一個網絡上的主機。在Java程序中,如果需要獲取本機的IP地址,有以下幾種方式。
一、通過InetAddress獲取本機IP地址
Java提供了一個InetAddress類,可以很方便地獲取本機IP地址。示例代碼如下:
import java.net.InetAddress;
public class GetLocalIPAddress {
public static void main(String[] args) {
try {
InetAddress address = InetAddress.getLocalHost();
System.out.println("本機IP地址:" + address.getHostAddress());
} catch (Exception e) {
e.printStackTrace();
}
}
}
執行上述程序後,輸出結果為:
本機IP地址:10.1.2.3
需要注意的是,InetAddress.getLocalHost()方法有可能會返回127.0.0.1,這是因為它是返回當前主機的loopback地址。如果想要獲得非loopback地址,則需要其他的方法來獲取。
二、通過NetworkInterface獲取本機IP地址
另一種獲取本機IP地址的方式是通過NetworkInterface類。該類提供了一個getNetworkInterfaces()方法,返回一個枚舉對象,包含當前機器上所有的網絡接口。可以通過該接口獲取到本機IP地址。示例代碼如下:
import java.net.*;
import java.util.Enumeration;
public class GetLocalIPAddress {
public static void main(String[] args) {
try {
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface ni = interfaces.nextElement();
Enumeration addresses = ni.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLinkLocalAddress() && !address.isLoopbackAddress()
&& address instanceof Inet4Address) {
System.out.println("本機IP地址:" + address.getHostAddress());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
執行上述程序後,輸出結果為:
本機IP地址:10.1.2.3
該方法可以獲取到本機的所有IP地址,而不只是一個loopback地址。
三、總結
本文介紹了兩種獲取本機IP地址的方法,並給出了詳細代碼示例。使用這些方法,可以很方便地獲取本機IP地址,方便網絡編程的開發。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/195604.html