Java 获取公网IP
概述
在Java中获取公网IP的过程可以分为以下几个步骤:
- 发送一个 HTTP GET 请求到一个公网地址,获取响应数据;
- 解析响应数据,提取其中的IP地址。
下面将详细介绍每一步需要做什么,以及使用的代码和注释。
步骤一:发送HTTP请求获取响应数据
首先,我们需要使用Java中的网络编程库发送一个HTTP GET请求,并获取到响应数据。这里我们可以使用Java的URLConnection类来实现。 以下是示例代码:
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 url = new URL("
// 打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方法为GET
connection.setRequestMethod("GET");
// 获取响应状态码
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
// 读取响应数据
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// 输出响应数据
System.out.println(response.toString());
// 关闭连接
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上代码通过发送一个GET请求到"
步骤二:解析响应数据提取IP地址
接下来,我们需要从响应数据中解析出IP地址。在这个例子中,我们可以假设响应数据是一个HTML页面,其中包含了公网IP地址。
以下是示例代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GetPublicIP {
public static void main(String[] args) {
try {
// 创建URL对象
URL url = new URL("
// 打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 设置请求方法为GET
connection.setRequestMethod("GET");
// 获取响应状态码
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
// 读取响应数据
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
// 关闭连接
connection.disconnect();
// 提取IP地址
Pattern pattern = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
Matcher matcher = pattern.matcher(response.toString());
if (matcher.find()) {
String ip = matcher.group();
System.out.println("Public IP: " + ip);
} else {
System.out.println("Failed to extract public IP.");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上代码通过使用正则表达式提取响应数据中的IP地址,并输出到控制台。
流程图
graph TD
A[发送HTTP GET请求] --> B{获取响应数据}
B --> C[解析响应数据提取IP地址]
C --> D{输出IP地址}
以上是整个流程的流程图,可以清晰地展示每个步骤之间的依赖关系。
甘特图
gantt
title Java获取公网IP甘特图
dateFormat YYYY-MM-DD
section 发送HTTP GET请求
准备代码 :a1, 2022-01-01, 1d
发送请求 :a2, after a1, 2d
section 获取响应数据
获取响应状态码 :b1, after a2, 1d
读取响应数据 :b2, after b1, 2d
section 解析响应数据提取IP地址
提取IP地址 :c1, after b2, 2d
section 输出IP地址
输出