Java获取局域网IP

1. 介绍

在开发网络应用程序时,有时候我们需要获取局域网中的IP地址。局域网(Local Area Network, LAN)是指在一个相对较小的地理范围内的计算机网络,通常是在家庭、办公室或校园内部。在Java中,我们可以使用一些方法来获取局域网中的IP地址。

2. 获取局域网IP的方法

2.1 使用InetAddress类

Java提供了InetAddress类来表示IP地址,并提供了一些方法来获取本地主机的相关信息。下面是一个示例代码:

import java.net.InetAddress;
import java.net.UnknownHostException;

public class GetLocalIP {

    public static void main(String[] args) {
        try {
            InetAddress localIP = InetAddress.getLocalHost();
            System.out.println("本机IP地址: " + localIP.getHostAddress());
            System.out.println("本机主机名: " + localIP.getHostName());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们使用getLocalHost()方法获取本机的InetAddress对象,然后调用getHostAddress()方法获取本机的IP地址,调用getHostName()方法获取本机的主机名。运行上述代码,将会输出本机的IP地址和主机名。

2.2 使用NetworkInterface类

除了使用InetAddress类,我们还可以使用NetworkInterface类来获取局域网中的IP地址。NetworkInterface类提供了一些静态方法来获取网络接口的信息。下面是一个示例代码:

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class GetLocalIP {

    public static void main(String[] args) {
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface networkInterface = interfaces.nextElement();
                Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
                while (addresses.hasMoreElements()) {
                    InetAddress address = addresses.nextElement();
                    if (!address.isLoopbackAddress() && !address.isLinkLocalAddress()) {
                        System.out.println("局域网IP地址: " + address.getHostAddress());
                    }
                }
            }
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们使用getNetworkInterfaces()方法获取所有的网络接口,然后遍历每个网络接口的InetAddress对象,如果该地址不是回环地址和链路本地地址,就输出该地址。运行上述代码,将会输出局域网中的IP地址。

3. 总结

本文介绍了两种获取局域网IP的方法:使用InetAddress类和NetworkInterface类。通过这些方法,我们可以方便地获取局域网中的IP地址,并在开发网络应用程序时使用。

如果你想了解更多关于Java网络编程方面的知识,请参考Java官方文档或相关书籍。

附录

pie
    title 局域网IP地址分布
    "192.168.0.x" : 50
    "192.168.1.x" : 30
    "192.168.2.x" : 20

以上是一个局域网IP地址的饼状图,显示了不同子网的IP地址分布情况。

请注意,在实际应用中,局域网IP地址的范围可以根据具体网络配置而有所不同。上述代码仅提供了获取局域网IP的基本方法,具体的配置和使用还需根据实际情况进行调整。