java获取用户访问时得公网ip和内网ip
时间: 2023-09-14 13:11:53 浏览: 126
Java判断IP地址为内网IP还是公网IP的方法
5星 · 资源好评率100%
在Java中获取用户的公网IP和内网IP需要进行不同的操作:
1. 获取公网IP
获取公网IP可以通过访问外部网站来获取,可以通过以下代码实现:
```java
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.io.IOException;
public class PublicIP {
public static void main(String[] args) {
try {
InetAddress addr = InetAddress.getByName("www.baidu.com");
System.out.println("Public IP: " + addr.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们通过访问百度网站来获取公网IP。
2. 获取内网IP
获取内网IP需要通过访问本地网络接口来获取,可以通过以下代码实现:
```java
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
public class LocalIP {
public static void main(String[] args) {
try {
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()){
NetworkInterface ni = interfaces.nextElement();
Enumeration<InetAddress> addresses = ni.getInetAddresses();
while (addresses.hasMoreElements()){
InetAddress addr = addresses.nextElement();
if (!addr.isLinkLocalAddress() && !addr.isLoopbackAddress() && addr.isSiteLocalAddress()){
System.out.println("Local IP: " + addr.getHostAddress());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,我们通过遍历本地网络接口来获取内网IP。在获取到的IP地址中,排除了本地链路地址和回环地址。
阅读全文