如何使用Java查询公网IP地址
在进行网络编程或者网络安全测试时,经常需要查询本机的公网IP地址。在Java中,我们可以通过一些常用的方法来获取本机的公网IP地址。本文将介绍如何使用Java代码查询公网IP地址,并提供相应的代码示例。
获取本机公网IP地址的方法
在Java中,获取本机公网IP地址的方法主要有以下几种:
- 使用第三方的公网IP查询服务
- 通过访问网络接口获取IP地址
- 通过Socket连接获取IP地址
下面将分别介绍这三种方法的具体实现方式。
使用第三方的公网IP查询服务
有一些网站提供了查询用户公网IP地址的服务,我们可以通过访问这些网站获取公网IP地址。通常这些服务会返回一个包含用户公网IP地址的JSON字符串,我们可以解析这个字符串来获取IP地址。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.HttpURLConnection;
public class PublicIPService {
public static String getPublicIP() {
String ip = "";
try {
URL url = new URL("
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
con.disconnect();
ip = content.toString().split("\"")[3];
} catch (Exception e) {
e.printStackTrace();
}
return ip;
}
public static void main(String[] args) {
String publicIP = getPublicIP();
System.out.println("Public IP Address: " + publicIP);
}
}
通过访问网络接口获取IP地址
另一种方法是通过访问网络接口获取IP地址。我们可以通过Java代码访问一些公开的网络接口,比如httpbin.org
,来获取本机的公网IP地址。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.HttpURLConnection;
public class PublicIPAPI {
public static String getPublicIP() {
String ip = "";
try {
URL url = new URL("
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
con.disconnect();
ip = content.toString().split("\"")[3];
} catch (Exception e) {
e.printStackTrace();
}
return ip;
}
public static void main(String[] args) {
String publicIP = getPublicIP();
System.out.println("Public IP Address: " + publicIP);
}
}
通过Socket连接获取IP地址
最后一种方法是通过建立Socket连接获取IP地址。我们可以通过连接到一些公开的Socket服务器,比如google.com
的端口80
,来获取本机的公网IP地址。
import java.net.InetAddress;
import java.net.Socket;
public class PublicIPObtain {
public static String getPublicIP() {
String ip = "";
try {
Socket socket = new Socket("google.com", 80);
InetAddress address = socket.getLocalAddress();
ip = address.getHostAddress();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
return ip;
}
public static void main(String[] args) {
String publicIP = getPublicIP();
System.out.println("Public IP Address: " + publicIP);
}
}
序列图
下面是一个使用第三方的公网IP查询服务来获取IP地址的序列图示例:
sequenceDiagram
participant Client
participant Service
Client ->> Service: 发起IP查询请求
Service ->> Client: 返回IP地址
结语
本文介绍了如何使用Java代码查询公网IP地址的方法,并给出了相应的代码示例。通过这些方法,我们可以方便地获取本机的公网IP地址,从而更好地进行网络编程或者网络安全测试。希望本文对你有所帮助,谢谢阅读!