一、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地址。
原创文章,作者:WGSX,如若转载,请注明出处:https://www.506064.com/n/145436.html
微信扫一扫
支付宝扫一扫