一、前言
在Java开发中,我们经常需要获取本机IP,例如在Socket编程时需要绑定本机的IP和端口号,或者需要知道本机的IP地址以便进行计算机网络课程的练习。本文将为大家介绍Java获取本机IP的方法。
二、通过InetAddress获取本机IP
Java提供了一个用于IP地址解析的InetAddress类,它能够完成主机名与IP地址之间的转换。
import java.net.InetAddress; public class GetLocalIP { public static void main(String[] args) { try { InetAddress inetAddress = InetAddress.getLocalHost(); System.out.println("当前主机的IP地址为:" + inetAddress.getHostAddress()); } catch (Exception e) { System.out.println("获取本机IP地址发生异常:" + e.getMessage()); } } }
以上代码通过调用getLocalHost()方法获取本地主机地址,该方法将返回InetAddress对象。调用该对象的getHostAddress()方法即可获取本机IP地址。
三、通过NetworkInterface获取本机IP
NetworkInterface是Java中处理网络接口的类,该类可以获取本机的网络接口信息。
import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Enumeration; public class GetLocalIP { public static void main(String[] args) { try { Enumerationinterfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface networkInterface = interfaces.nextElement(); Enumeration addresses = networkInterface.getInetAddresses(); while (addresses.hasMoreElements()) { InetAddress inetAddress = addresses.nextElement(); if (!inetAddress.isLinkLocalAddress() && !inetAddress.isLoopbackAddress() && inetAddress.isSiteLocalAddress()) { System.out.println("当前主机的IP地址为:" + inetAddress.getHostAddress()); } } } } catch (Exception e) { System.out.println("获取本机IP地址发生异常:" + e.getMessage()); } } }
以上代码通过调用getNetworkInterfaces()方法获取本地网络接口,然后遍历每一个网络接口,再遍历该接口下的所有IP地址并判断是否为本机的IP地址,最终输出对应的IP地址。
四、总结
本文介绍了两种获取本机IP的方法,一种是通过InetAddress类获取,另一种是通过NetworkInterface类获取。在实际应用中,应根据具体的需求选择合适的方法。