在Java中,我们可以通过多种方法来获取本机的IP地址,包括内网IP地址和公网IP地址。本文将分别介绍获取这两种IP地址的方法,并提供相应的代码示例。
一、获取内网IP地址
内网IP地址通常是指局域网中分配给设备的地址,常见的有192.168.x.x、10.x.x.x等。在Java中,可以使用InetAddress
类来获取本机的内网IP地址。
以下是获取本机内网IP地址的示例代码:
import java.net.InetAddress;
import java.net.UnknownHostException;
public class LocalIPExample {
public static void main(String[] args) {
try {
// 获取本机的InetAddress对象
InetAddress localHost = InetAddress.getLocalHost();
// 输出本机的IP地址和计算机名
System.out.println("计算机名: " + localHost.getHostName());
System.out.println("内网IP地址: " + localHost.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
在这段代码中,我们通过InetAddress.getLocalHost()
方法获得本机的InetAddress
实例,并通过getHostAddress()
方法获取IP地址。运行以上代码将会输出本机的计算机名以及内网IP地址。
二、获取公网IP地址
获取公网IP地址的方式则相对复杂一些,因为公网IP地址并不是设备自己直接持有的。通常,我们可以通过访问外部的Web服务来获取公网IP地址,例如使用ipinfo.io、ip-api.com等服务提供的API。
以下是一个使用Java获取公网IP地址的代码示例:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class PublicIPExample {
public static void main(String[] args) {
try {
// 使用ipinfo.io提供的API获取公网IP地址
URL url = new URL("http://ipinfo.io/ip");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
// 读取返回结果
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String publicIP = reader.readLine();
reader.close();
// 输出公网IP地址
System.out.println("公网IP地址: " + publicIP);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这段代码中,我们使用HttpURLConnection
类向ipinfo.io的API发送GET请求,获取到公网IP地址的字符串,并将其打印在控制台上。
总结
通过使用Java的InetAddress
类,我们可以方便地获取本机的内网IP地址,而要获取公网IP地址则需要借助外部的Web服务。正如上面的代码所示,我们可以很轻松地实现这些功能。灵活运用这些方法,可以帮助我们在网络编程中获取所需的IP信息。希望这篇文章对你理解Java中的IP地址获取方法有所帮助!