java如何获取ip
获取本地IP地址
使用 InetAddress 类可以获取本地主机的IP地址。以下是一个示例代码:
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetLocalIP {
public static void main(String[] args) {
try {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println("Local IP Address: " + localHost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
获取客户端IP地址(Web应用)
在Web应用中,可以通过 HttpServletRequest 对象获取客户端的IP地址。以下是一个Servlet示例:
import javax.servlet.http.HttpServletRequest;
public class GetClientIP {
public static String getClientIp(HttpServletRequest request) {
String ipAddress = request.getHeader("X-Forwarded-For");
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
ipAddress = request.getRemoteAddr();
}
return ipAddress;
}
}
获取公网IP地址
如果需要获取公网IP地址,可以通过调用外部API实现。以下是一个使用 HttpURLConnection 调用API的示例:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class GetPublicIP {
public static void main(String[] args) {
try {
URL url = new URL("https://api.ipify.org?format=text");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String publicIp = reader.readLine();
System.out.println("Public IP Address: " + publicIp);
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意事项
- 本地IP地址可能返回
127.0.0.1(回环地址),尤其是在某些网络配置下。 - Web应用中获取客户端IP时,需注意代理服务器可能修改请求头,优先检查
X-Forwarded-For等头信息。 - 调用外部API获取公网IP时,需确保网络连接正常,且API服务可用。






