您的位置:

Java获取本机IP地址

一、IP地址和端口号

在了解Java获取本机IP地址前,我们应该先了解下IP地址和端口号。

IP地址是指互联网协议地址,它用于标识一个设备在网络中的位置。在IPv4中,它是由32位二进制数表示;在IPv6中,它是由128位二进制数表示。而端口号则是用于标识进程的逻辑地址,它是由16位二进制数表示。

在Java中,我们可以使用 InetAddress 类来获取本机IP地址。

二、InetAddress类

InetAddress 类用于获取和操作IP地址和DNS信息。我们可以通过 InetAddress 类的静态方法来获取本机的IP地址。

import java.net.*;

public class IPAddress {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress myIP = InetAddress.getLocalHost();
        System.out.println("My IP Address is:");
        System.out.println(myIP.getHostAddress());
    }
}

运行以上代码,我们可以得到本机的IP地址:

My IP Address is:
192.168.1.100

我们也可以通过以下代码获取本机的主机名:

import java.net.*;

public class Hostname {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress myIP = InetAddress.getLocalHost();
        System.out.println("My Hostname is:");
        System.out.println(myIP.getHostName());
    }
}

运行以上代码,我们可以得到本机的主机名:

My Hostname is:
DESKTOP-ABCDE

三、NetworkInterface类

除了使用 InetAddress 类获取本机的IP地址,还可以使用 NetworkInterface 类来获取本机的IP地址。NetworkInterface 类用于表示一个网络接口,如网卡、无线网卡等。

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

public class NetworkInterfaceTest {
    public static void main(String[] args) throws SocketException {
        Enumeration ifaceList = NetworkInterface.getNetworkInterfaces();
        while (ifaceList.hasMoreElements()) {
            NetworkInterface iface = ifaceList.nextElement();
            System.out.println(iface.getName() + ":");
            Enumeration
    addressList = iface.getInetAddresses();
            while (addressList.hasMoreElements()) {
                InetAddress address = addressList.nextElement();
                System.out.println("    " + address.getHostAddress());
            }
        }
    }
}

   
  

运行以上代码,我们可以得到本机的所有IP地址:

eth0:
    192.168.1.100
lo:
    127.0.0.1

四、总结

通过 InetAddress 类和 NetworkInterface 类可以很方便地获取本机的IP地址。在实际开发中,我们需要根据具体的需求来选择使用哪种方法来获取IP地址。