Java程序通常需要获取服务器IP地址来确保应用程序能够准确地与之通信,这篇文章将为您提供Java获取服务器IP的几种方法。我们将从旧的Java版本开始,向您介绍一些基于网络的技术,并介绍在旧版本和新版本的Java编程环境中如何实现。
一、使用InetAddress类获取服务器IP
Java SE提供了InetAddress类,该类表示互联网协议(IP)地址。InetAddress类提供了静态方法getByName(),该方法接受主机名或IP地址字符串,并返回InetAddress对象,在InetAddress对象中包含与指定主机名或IP地址相对应的IP地址。 下面使用InetAddress的getLocalHost()方法,演示如何获取当前服务器的IP地址:
import java.net.*;
public class GetServerIP {
public static void main(String[] args) throws UnknownHostException {
InetAddress ip = InetAddress.getLocalHost();
System.out.println(ip.getHostAddress());
}
}
该程序将会输出当前服务器的IP地址。
二、使用Socket类获取服务器IP
在Java中,Socket类用于建立连接到网络应用程序,可以通过Socket类获取服务器的IP地址和端口号。Socket类的构造函数包含两个参数:服务器主机名和端口号,在创建Socket对象时这两个参数是必需的。 下面是一个简单的Java程序,它连接到一个远程服务器,并获取该服务器的IP地址和端口号:
import java.io.IOException;
import java.net.*;
public class GetServerIPUsingSocket {
public static void main(String[] args) throws IOException {
InetAddress address = InetAddress.getByName("www.baidu.com");
Socket socket = new Socket(address, 80);
System.out.println("Connected to server!");
System.out.println("Server IP address: " + socket.getInetAddress());
System.out.println("Server port number: " + socket.getPort());
socket.close();
}
}
该程序将会连接到百度服务器,并输出服务器的IP地址和端口号。
三、使用NetworkInterface类获取本地IP
如果在服务器上部署的Java应用程序需要获取本地IP地址而不是服务器IP地址,可以使用NetworkInterface类。 NetworkInterface类表示网络接口,可以用于查询相应的IP地址和硬件地址。 下面是一个简单的Java程序,演示如何使用NetworkInterface类获取本地IP地址:
import java.net.*;
import java.util.*;
public class GetLocalIP {
public static void main(String[] args) throws SocketException {
Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface currentInterface = interfaces.nextElement();
if (!currentInterface.isUp() || currentInterface.isLoopback() || currentInterface.isVirtual())
{ continue;}
Enumeration
addresses = currentInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress currentAddress = addresses.nextElement();
if (currentAddress.isLoopbackAddress() || !currentAddress.getHostAddress().contains(":")) {
System.out.println(currentAddress.getHostAddress());
}
}
}
}
}
该程序将会输出本地IP地址,如果本地IP地址是127.0.0.1,将会被忽略。
四、小结
以上就是Java获取服务器IP的几种方法,从简单的InetAddress类到使用Socket类,再到NetworkInterface类,您可以根据实际情况使用任一种方法来获取所需的IP地址。 代码示例:
https://github.com/lulu131206/GetServerIPDemo