推薦答案
在Java中,你可以使用多種方法來獲取本機的IP地址。下面將介紹三種常用的方法。
方法一:使用InetAddress類
InetAddress類提供了獲取本機IP地址的簡單方式。你可以通過調用其中的靜態方法getLocalHost()來獲取本機的InetAddress對象,然后再調用getHostAddress()方法獲取本機的IP地址。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIPAddress {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
String ipAddress = localHost.getHostAddress();
System.out.println("本機IP地址是:" + ipAddress);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
上述代碼將輸出本機的IP地址。
方法二:使用NetworkInterface類
另一種獲取本機IP地址的方法是使用NetworkInterface類。通過遍歷所有的網絡接口,我們可以獲取每個網絡接口對應的IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class GetIPAddress {
public static void main(String[] args) {
try {
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
System.out.println("本機IP地址是:" + address.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述代碼將輸出本機的所有IP地址,同時過濾掉了回環地址(loopback address)和本地鏈路地址(link-local address)。
方法三:使用System類和網絡接口
還有一種獲取本機IP地址的方法是使用System類和網絡接口。通過調用System.getenv()方法獲取操作系統的環境變量,然后根據操作系統的不同,找到對應的網絡接口名稱,并進一步獲取IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.Map;
public class GetIPAddress {
public static void main(String[] args) {
try {
Map env = System.getenv();
String os = System.getProperty("os.name").toLowerCase();
String networkInterfaceName = null;
if (os.contains("win")) {
networkInterfaceName = env.get("COMPUTERNAME");
} else if (os.contains("nix") || os.contains("nux") || os.contains("mac")) {
networkInterfaceName = env.get("USER");
}
NetworkInterface networkInterface = NetworkInterface.getByName(networkInterfaceName);
Enumeration addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
System.out.println("本機IP地址是:" + address.getHostAddress());
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述代碼根據操作系統類型獲取對應的網絡接口名稱,并獲取該網絡接口的IPv4地址。
這些就是在Java中獲取本機IP地址的三種常用方法。你可以根據自己的需求選擇合適的方法來獲取本機的IP地址。
其他答案
-
在Java中,獲取本機的IP地址有多種方法。下面將介紹三種常用的方法。
方法一:使用InetAddress類
InetAddress類是Java提供的用于表示IP地址的類,通過其方法getLocalHost()可以獲取本機的InetAddress對象,然后再使用getHostAddress()方法獲取本機IP地址。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIPAddress {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
String ipAddress = localHost.getHostAddress();
System.out.println("本機IP地址是:" + ipAddress);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
上述代碼將輸出本機的IP地址。
方法二:使用NetworkInterface類
NetworkInterface類提供了更靈活的方式來獲取本機的IP地址。通過遍歷所有的網絡接口,可以獲取每個網絡接口對應的IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class GetIPAddress {
public static void main(String[] args) {
try {
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
System.out.println("本機IP地址是:" + address.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述代碼將輸出本機的所有IP地址,并過濾掉了回環地址(loopback address)和本地鏈路地址(link-local address)。
方法三:使用System類和網絡接口
也可以使用System類和網絡接口來獲取本機IP地址。通過調用System.getenv()方法獲取操作系統的環境變量,然后根據操作系統的不同,找到對應的網絡接口名稱,并進一步獲取IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.Map;
public class GetIPAddress {
public static void main(String[] args) {
try {
Map env = System.getenv();
String os = System.getProperty("os.name").toLowerCase();
String networkInterfaceName = null;
if (os.contains("win")) {
networkInterfaceName = env.get("COMPUTERNAME");
} else if (os.contains("nix") || os.contains("nux") || os.contains("mac")) {
networkInterfaceName = env.get("USER");
}
NetworkInterface networkInterface = NetworkInterface.getByName(networkInterfaceName);
Enumeration addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
System.out.println("本機IP地址是:" + address.getHostAddress());
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述代碼根據操作系統類型獲取對應的網絡接口名稱,并獲取該網絡接口的IPv4地址。
這些就是在Java中獲取本機IP地址的三種常用方法。根據實際的需求,選擇合適的方法來獲取本機的IP地址。
-
在Java中,獲取本機的IP地址有多種方法。下面將介紹三種常用的方法。
方法一:使用InetAddress類
使用InetAddress類是最簡單的方法來獲取本機的IP地址。通過調用其中的getLocalHost()方法可以獲取到本機對應的InetAddress對象,然后通過getHostAddress()方法獲取IP地址的字符串表示。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIPAddress {
public static void main(String[] args) {
try {
InetAddress localhost = InetAddress.getLocalHost();
String ipAddress = localhost.getHostAddress();
System.out.println("本機IP地址是:" + ipAddress);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
上述代碼將輸出本機的IP地址。
方法二:使用NetworkInterface類
使用NetworkInterface類可以獲取本機的所有網絡接口信息,包括IP地址。通過遍歷所有的網絡接口,可以獲取每個網絡接口對應的IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class GetIPAddress {
public static void main(String[] args) {
try {
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = interfaces.nextElement();
Enumeration addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
System.out.println("本機IP地址是:" + address.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述代碼將輸出本機的所有IP地址,并且過濾掉了回環地址(loopback address)和本地鏈路地址(link-local address)。
方法三:使用System類和網絡接口
另一種方法是使用System類和網絡接口來獲取本機的IP地址。根據不同的操作系統,可以通過System類的方法和環境變量獲取網絡接口的名稱,進而獲取IP地址。
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.Map;
public class GetIPAddress {
public static void main(String[] args) {
try {
Map env = System.getenv();
String os = System.getProperty("os.name").toLowerCase();
String networkInterfaceName = null;
if (os.contains("win")) {
networkInterfaceName = env.get("COMPUTERNAME");
} else if (os.contains("nix") || os.contains("nux") || os.contains("mac")) {
networkInterfaceName = env.get("USER");
}
NetworkInterface networkInterface = NetworkInterface.getByName(networkInterfaceName);
Enumeration addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress address = addresses.nextElement();
if (!address.isLoopbackAddress() && !address.isLinkLocalAddress() && address.isSiteLocalAddress()) {
System.out.println("本機IP地址是:" + address.getHostAddress());
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述代碼根據操作系統類型獲取對應的網絡接口名稱,并獲取該網絡接口的IPv4地址。
這些就是在Java中獲取本機IP地址的三種常用方法。根據需要選擇合適的方法來獲取本機的IP地址。