您的位置:

Java获取本机IP

一、前言

在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 {
            Enumeration interfaces = 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类获取。在实际应用中,应根据具体的需求选择合适的方法。