您的位置:

Java获取当前IP地址的方法

引子

在进行Java网络编程的时候,获取主机的IP地址是常见的需求。IP地址可以用于识别网络中的主机和设备,也可以用于一些网络权限控制等。在本文中,我们将讨论如何使用Java代码获取主机的IP地址。

获取本地IP地址的方法

在Java中获取本地IP地址的方法有很多,我们可以通过NetworkInterface类或者InetAddress类来实现。本地IP地址可以是IPv4地址或者IPv6地址。

使用NetworkInterface类

NetworkInterface类可以用于访问网络接口的信息,包括网络接口的名称、状态、MAC地址和IP地址等。下面是使用NetworkInterface类获取本地IP地址的代码示例:

import java.net.*;
import java.util.*;

public class NetworkInterfaceDemo {
    public static void main(String[] args) throws SocketException {
        Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements()) {
            NetworkInterface ni = interfaces.nextElement();
            Enumeration
    addresses = ni.getInetAddresses();
            while (addresses.hasMoreElements()) {
                InetAddress addr = addresses.nextElement();
                if (!addr.isLinkLocalAddress() && !addr.isLoopbackAddress() && addr instanceof Inet4Address) {
                    System.out.println("Local IP: " + addr.getHostAddress());
                }
            }
        }
    }
}

   
  

上面的代码会输出本地的IPv4地址。

使用InetAddress类

InetAddress类可以表示网络中的IP地址,并提供获取网络地址的一些方法。下面是使用InetAddress类获取本地IP地址的代码示例:

import java.net.*;

public class InetAddressDemo {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress address = InetAddress.getLocalHost();
        System.out.println("Local IP: " + address.getHostAddress());
    }
}

上面的代码会输出本地的IPv4地址或者IPv6地址,具体取决于本地的网络配置。

获取远程IP地址的方法

获取远程IP地址的方法与获取本地IP地址的方法类似,也可以使用InetAddress类或者Socket类来实现。

使用InetAddress类

如果我们知道远程主机的主机名或者IP地址,我们可以使用InetAddress类来获取远程主机的IP地址。下面是使用InetAddress类获取远程IP地址的代码示例:

import java.net.*;

public class InetAddressDemo {
    public static void main(String[] args) throws UnknownHostException {
        String hostname = "www.google.com";
        InetAddress address = InetAddress.getByName(hostname);
        System.out.println("Remote IP: " + address.getHostAddress());
    }
}

上面的代码会输出远程主机的IPv4地址或者IPv6地址,具体取决于远程主机的网络配置。

使用Socket类

如果我们需要在Java程序中连接到远程主机并发送或接收数据,我们可以使用Socket类。通过Socket类,我们可以获取远程主机的IP地址。下面是使用Socket类获取远程IP地址的代码示例:

import java.net.*;

public class SocketDemo {
    public static void main(String[] args) throws Exception {
        String hostname = "www.google.com";
        int port = 80;
        
        Socket socket = new Socket(hostname, port);
        InetAddress address = socket.getInetAddress();
        System.out.println("Remote IP: " + address.getHostAddress());
        
        socket.close();
    }
}

上面的代码会打开与远程主机的连接,获取远程主机的IP地址,并关闭连接。

总结

本文介绍了在Java中获取本地和远程IP地址的方法。我们可以使用NetworkInterface类或者InetAddress类来获取本地IP地址,使用InetAddress类或者Socket类来获取远程IP地址。获取IP地址可以用于网络编程中的一些功能和权限控制等,对于Java网络编程的学习非常重要。