一、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 { EnumerationifaceList = 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地址。