java获取本机公网ip
时间: 2024-09-19 15:00:23 浏览: 50
在Java中获取本机的公网IP地址,通常需要借助第三方库或者操作系统提供的API。一种常见的方法是使用`java.net.InetAddress`类配合`getHostAddress()`方法,然后检查返回的是局域网IP还是公网IP。以下是简单的示例:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
public class Main {
public static void main(String[] args) throws Exception {
// 获取所有网络接口
for (NetworkInterface networkInterface : NetworkInterface.getNetworkInterfaces()) {
// 排除本地回环接口和其他非常规接口
if (!networkInterface.isLoopback() && !isExcluded(networkInterface)) {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(networkInterface.getInetAddresses().iterator().next().getReader()))) {
String line;
while ((line = reader.readLine()) != null) {
// 如果是IPv4地址并且状态为"UP"
if (InetAddress.getByName(line).isSiteLocalAddress() || InetAddress.getByName(line).isPublic()) {
System.out.println("Public IP address: " + line);
break; // 找到公网IP就停止循环
}
}
}
}
}
}
private static boolean isExcluded(NetworkInterface networkInterface) {
return "lo".equals(networkInterface.getName()); // 这里仅排除名为"lo"的回环接口,你可以根据实际需求调整
}
}
```
阅读全文