推荐答案
在Java中,你可以使用java.net包提供的InetAddress类来获取本机的IP地址。InetAddress类提供了一系列静态方法和实例方法用于获取和操作IP地址。下面是一个示例代码,演示如何获取本机的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();
}
}
}
在上面的示例中,我们首先调用InetAddress.getLocalHost()方法获取本机的InetAddress对象。然后,通过调用getHostAddress()方法,我们可以获取到本机的IP地址字符串。最后,我们将得到的IP地址输出到控制台。
输出结果可能类似于:
本机IP地址:192.168.1.100
通过这种方式,你可以获取到本机的IP地址。
其他答案
-
除了使用InetAddress类,你还可以使用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 inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress()
&& inetAddress.isSiteLocalAddress()) {
String ipAddress = inetAddress.getHostAddress();
System.out.println("本机IP地址:" + ipAddress);
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
在上面的示例中,我们通过调用NetworkInterface.getNetworkInterfaces()方法获取网络接口的枚举。然后,我们遍历每个网络接口,并通过getInetAddresses()方法获取每个网络接口的IP地址。在遍历IP地址时,我们排除了回环地址和本地链路地址,并通过isSiteLocalAddress()方法判断当前IP地址是否为本机的站点本地地址。如果是,则将其输出到控制台。
输出结果可能类似于:
本机IP地址:192.168.1.100
通过这种方式,你同样可以获取到本机的IP地址。
-
另一种获取本机IP地址的方法是使用Java的第三方库,如Apache Commons Net库。这个库提供了更多便捷的方法来获取本机的IP地址。下面是一个示例代码:
import org.apache.commons.net.util.SubnetUtils;
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
inetAddresses = networkInterface.getInetAddresses(); while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
String ipAddress = inetAddress.getHostAddress();
SubnetUtils.SubnetInfo subnetInfo = new SubnetUtils(ipAddress + "/24").getInfo();
if (subnetInfo.isInRange(ipAddress)) {
System.out.println("本机IP地址:" + ipAddress);
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
在上面的示例中,我们使用了Apache Commons Net库提供的SubnetUtils类来判断IP地址是否在本机的子网范围内。我们通过调用SubnetUtils(ipAddress + "/24").getInfo()方法创建一个子网工具对象,并通过isInRange(ipAddress)方法判断当前IP地址是否在子网范围内。
其他部分的代码与前两个答案类似,遍历网络接口和IP地址,排除回环地址和本地链路地址,并输出符合条件的IP地址到控制台。
输出结果可能类似于:
本机IP地址:192.168.1.100
通过这种方式,你同样可以获取到本机的IP地址。