Java获取IP地址和端口

在网络编程中,获取IP地址和端口是非常常见的操作。Java提供了一些内置的类和方法来帮助我们实现这个目标。本文将介绍如何使用Java获取IP地址和端口,包括获取本地IP地址和端口以及获取远程主机的IP地址和端口。

获取本地IP地址和端口

获取本地IP地址和端口是获取网络连接信息的第一步。在Java中,我们可以使用InetAddress类来获取本地主机的IP地址。下面是获取本地IP地址和主机名的示例代码:

import java.net.InetAddress;

public class LocalIPExample {
    public static void main(String[] args) {
        try {
            InetAddress localHost = InetAddress.getLocalHost();
            String ipAddress = localHost.getHostAddress();
            String hostName = localHost.getHostName();
            
            System.out.println("IP Address: " + ipAddress);
            System.out.println("Host Name: " + hostName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们使用InetAddress.getLocalHost()方法获取本地主机的InetAddress对象。然后,我们可以使用getHostAddress()方法获取IP地址,使用getHostName()方法获取主机名。

另外,如果我们想获取本地主机的端口号,我们可以使用ServerSocket类来创建一个临时的服务器套接字,并使用getLocalPort()方法获取本地端口号。下面是获取本地端口号的示例代码:

import java.net.ServerSocket;

public class LocalPortExample {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(0);
            int localPort = serverSocket.getLocalPort();
            
            System.out.println("Local Port: " + localPort);
            
            serverSocket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们创建了一个临时的服务器套接字,并将端口号设置为0,这样操作系统会自动选择一个可用的端口号。然后,我们使用getLocalPort()方法获取本地端口号。

获取远程主机的IP地址和端口

除了获取本地主机的IP地址和端口,我们还可以获取远程主机的IP地址和端口。对于远程主机,我们可以使用InetAddress类的getByName()方法来获取InetAddress对象。下面是获取远程主机IP地址和主机名的示例代码:

import java.net.InetAddress;

public class RemoteIPExample {
    public static void main(String[] args) {
        try {
            String hostName = "www.example.com";
            
            InetAddress remoteHost = InetAddress.getByName(hostName);
            String ipAddress = remoteHost.getHostAddress();
            
            System.out.println("IP Address: " + ipAddress);
            System.out.println("Host Name: " + hostName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们使用InetAddress.getByName()方法传入远程主机的主机名来获取InetAddress对象。然后,我们可以使用getHostAddress()方法获取IP地址。

另外,如果我们想获取远程主机的端口号,我们可以使用Socket类来创建一个套接字连接到远程主机,并使用getPort()方法获取远程端口号。下面是获取远程端口号的示例代码:

import java.net.Socket;

public class RemotePortExample {
    public static void main(String[] args) {
        try {
            String hostName = "www.example.com";
            int port = 80;
            
            Socket socket = new Socket(hostName, port);
            int remotePort = socket.getPort();
            
            System.out.println("Remote Port: " + remotePort);
            
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们创建了一个套接字连接到远程主机,并使用getPort()方法获取远程端口号。

总结

在本文中,我们学习了如何使用Java获取IP地址和端口。我们首先介绍了获取本地IP地址和端口的方法,包括使用InetAddress类获取本地主机的IP地址和主机名,以及使用ServerSocket类获取本地端口号。然后,我们介绍了获取远程主机的IP地址和端口的方法