一、InetAddress类的使用
Java中获取本机IP的常见方法是使用InetAddress类。该类用于标识网络上的主机,提供了多种获取IP地址的方法。 通过以下代码段获取本机IP地址:
InetAddress addr = InetAddress.getLocalHost();
String ip = addr.getHostAddress();
System.out.println("本机IP地址 :" + ip);
上述代码中,首先通过静态方法getLocalHost()
获取本地主机地址信息,然后调用getHostAddress()
方法获取本机IP地址。该方法返回一个字符串,包含了本机的IPv4或IPv6地址。
除了上述方法,InetAddress类还提供了其它一些用于获取IP地址的方法,如通过域名获取IP地址、获取本机主机名等。
二、NetworkInterface类的使用
除了InetAddress类,Java还提供了NetworkInterface类,该类可用于获取与当前主机接口相关的信息,包括IP地址、MAC地址等。 通过以下代码段获取本机所有IP地址:
Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip = null;
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
Enumeration<InetAddress> addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
ip = addresses.nextElement();
if (ip != null && ip instanceof Inet4Address) {
System.out.println("本机IP地址:" + ip.getHostAddress());
}
}
}
上述代码中,首先通过静态方法getNetworkInterfaces()
获取当前主机所有的网络接口,然后遍历所有的网络接口,获取每个接口的地址信息,并输出所有IPv4地址。
三、通过Java GUI界面获取IP地址
除了通过代码获取IP地址之外,Java还提供了GUI界面获取IP地址的方法。 通过以下代码段在GUI界面上获取IP地址:
import java.net.InetAddress;
import javax.swing.JOptionPane;
public class IPDialog {
public static void main(String[] args)
throws Exception {
InetAddress address = InetAddress.getLocalHost();
JOptionPane.showMessageDialog(null, address.getHostAddress());
}
}
上述代码中,首先通过静态方法getLocalHost()
获取本地主机地址信息,然后弹出一个消息对话框,显示本机的IP地址。
四、通过系统命令获取IP地址
除了通过Java API获取IP地址之外,还可以通过执行系统命令获取IP地址。 通过以下代码段获取本机IP地址:
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("ifconfig");
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while ((line = br.readLine()) != null) {
if (line.contains("inet ")) {
String[] tokens = line.split("\\s+");
System.out.println("IP地址 :" + tokens[1]);
}
}
br.close();
is.close();
上述代码中,首先通过Runtime类的exec()
方法执行系统命令ifconfig
来获取系统网络配置信息,在输出流中读取命令结果,并查找包含inet
的行,从中提取出IP地址。
五、总结
本文详细介绍了Java获取本机IP的多种方法,包括使用InetAddress类、NetworkInterface类、GUI界面和系统命令等,读者可以根据自己的需要选择最适合自己的方法。