引言
IP地址在网络编程中起着非常重要的作用,Java提供了很多方法来获取本地IP地址。
正文
一、使用InetAddress方法获取本地IP
Java中提供了InetAddress类来获取IP地址。它是用来表示不同类型的网络地址的类,包括IP地址。我们可以通过InetAddress.getLocalHost()方法获取本地主机的IP地址和主机名。
public static void main(String[] args) throws UnknownHostException {
InetAddress inetAddress = InetAddress.getLocalHost();
System.out.println("本机IP地址:" + inetAddress.getHostAddress());
System.out.println("本机主机名:" + inetAddress.getHostName());
}
执行结果如下:
本机IP地址:192.168.1.111
本机主机名:localhost
需要注意的是,在InetAddress的实现中,getLocalHost()方法会经常去访问DNS服务器,所以会有一点点耗时。
二、使用NetworkInterface方法获取本地IP
除了使用InetAddress类,Java还提供了NetworkInterface类来获取本地IP地址。NetworkInterface类提供了一些方法,可以用来获取本机所有网络接口的信息,包括IP地址和MAC地址。
public static void main(String[] args) throws SocketException, UnknownHostException {
Enumeration
allNetInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = allNetInterfaces.nextElement();
Enumeration
addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
ip = addresses.nextElement();
if (ip != null && ip instanceof Inet4Address) {
System.out.println("本机IP地址:" + ip.getHostAddress());
}
}
}
}
执行结果如下:
本机IP地址:127.0.0.1
本机IP地址:192.168.1.111
三、结论
通过以上两种方法,我们可以很方便地获取本机的IP地址。如果只需要获取一个IP地址,使用InetAddress类就足够了。如果需要获取所有的IP地址,或者需要获取网络接口的信息,那么就要使用NetworkInterface类。