您的位置:

Java获取服务器IP的方法

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