简介
在Java中,获取本机IP地址是一项常见的任务。本文将介绍几种Java获取本机IP地址的方法和实例。
方法一:使用InetAddress类
首先,我们可以使用Java的InetAddress类来获取本机IP地址。可以通过调用InetAddress类的getLocalHost方法来获取本机的IP地址。下面是一个示例代码:
import java.net.InetAddress;
public class GetLocalIP {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
String ipAddress = localHost.getHostAddress();
System.out.println("本机IP地址:" + ipAddress);
} catch (Exception e) {
e.printStackTrace();
}
}
}
方法二:使用NetworkInterface类
另一个获取本机IP地址的方法是使用Java的NetworkInterface类。通过遍历NetworkInterface类的所有网络接口,我们可以获取每个网络接口的IP地址。下面是一个示例代码:
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class GetLocalIP {
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();
}
}
}
方法三:使用System类
还有一种简单的方法是使用Java的System类。System类有一个getProperty方法,可以获取系统属性,其中一个系统属性是"java.net.preferIPv4Stack"。如果将该属性设置为"true",则可以获取IPv4地址。下面是一个示例代码:
import java.util.Arrays;
import java.util.stream.Stream;
public class GetLocalIP {
public static void main(String[] args) {
String ipv4 = Stream.of(System.getenv("WINDIR"))
.filter(e -> e != null && e.endsWith("\\"))
.flatMap(e -> Arrays.stream(new String[] { "ipconfig", "/all" }))
.findFirst()
.map(e -> {
try {
Process process = Runtime.getRuntime().exec(e);
java.util.Scanner scanner = new java.util.Scanner(process.getInputStream(),
"GBK").useDelimiter("\\A");
return scanner.hasNext() ? scanner.next() : "";
} catch (java.io.IOException ex) {
return null;
}
})
.filter(e -> e != null && !e.isEmpty())
.flatMap(e -> Arrays.stream(e.split("\\n")))
.map(String::trim)
.filter(e -> e.startsWith("IPv4 地址"))
.map(e -> e.substring(e.indexOf(":") + 1).trim())
.findFirst()
.orElse(null);
System.out.println("本机IP地址:" + ipv4);
}
}
总结
通过InetAddress类、NetworkInterface类和System类,我们可以在Java中轻松获取本机IP地址。不同的方法适用于不同的场景,可以根据实际需求选择合适的方法。
感谢阅读
感谢您阅读本文,希望本文可以帮助您更好地理解和掌握Java获取本机IP地址的方法。
顶一下
(0)
0%
踩一下
(0)
0%
- 相关评论
- 我要评论
-
上一篇:返回栏目
下一篇:Java代码规范与最佳实践