Excel表格网

Java获取本机IP地址的方法及实例

74 2024-04-19 22:08 admin   手机版

简介

在Java中,获取本机IP地址是一项常见的任务。本文将介绍几种Java获取本机IP地址的方法和实例。

方法一:使用InetAddress类

首先,我们可以使用Java的InetAddress类来获取本机IP地址。可以通过调用InetAddress类的getLocalHost方法来获取本机的IP地址。下面是一个示例代码:

        
    import java.net.InetAddress;

    public class GetLocalIP {
        public static void main(String[] args) {
            try {
                InetAddress localHost = InetAddress.getLocalHost();
                String ipAddress = localHost.getHostAddress();
                System.out.println("本机IP地址:" + ipAddress);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
        
    

方法二:使用NetworkInterface类

另一个获取本机IP地址的方法是使用Java的NetworkInterface类。通过遍历NetworkInterface类的所有网络接口,我们可以获取每个网络接口的IP地址。下面是一个示例代码:

        
    import java.net.NetworkInterface;
    import java.net.SocketException;
    import java.util.Enumeration;

    public class GetLocalIP {
        public static void main(String[] args) {
            try {
                Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
                while (networkInterfaces.hasMoreElements()) {
                    NetworkInterface networkInterface = networkInterfaces.nextElement();
                    Enumeration inetAddresses = networkInterface.getInetAddresses();
                    while (inetAddresses.hasMoreElements()) {
                        InetAddress inetAddress = inetAddresses.nextElement();
                        if (!inetAddress.isLoopbackAddress() && !inetAddress.isLinkLocalAddress()
                                && inetAddress.isSiteLocalAddress()) {
                            String ipAddress = inetAddress.getHostAddress();
                            System.out.println("本机IP地址:" + ipAddress);
                        }
                    }
                }
            } catch (SocketException e) {
                e.printStackTrace();
            }
        }
    }
        
    

方法三:使用System类

还有一种简单的方法是使用Java的System类。System类有一个getProperty方法,可以获取系统属性,其中一个系统属性是"java.net.preferIPv4Stack"。如果将该属性设置为"true",则可以获取IPv4地址。下面是一个示例代码:

        
    import java.util.Arrays;
    import java.util.stream.Stream;

    public class GetLocalIP {
        public static void main(String[] args) {
            String ipv4 = Stream.of(System.getenv("WINDIR"))
                    .filter(e -> e != null && e.endsWith("\\"))
                    .flatMap(e -> Arrays.stream(new String[] { "ipconfig", "/all" }))
                    .findFirst()
                    .map(e -> {
                        try {
                            Process process = Runtime.getRuntime().exec(e);
                            java.util.Scanner scanner = new java.util.Scanner(process.getInputStream(),
                                    "GBK").useDelimiter("\\A");
                            return scanner.hasNext() ? scanner.next() : "";
                        } catch (java.io.IOException ex) {
                            return null;
                        }
                    })
                    .filter(e -> e != null && !e.isEmpty())
                    .flatMap(e -> Arrays.stream(e.split("\\n")))
                    .map(String::trim)
                    .filter(e -> e.startsWith("IPv4 地址"))
                    .map(e -> e.substring(e.indexOf(":") + 1).trim())
                    .findFirst()
                    .orElse(null);

            System.out.println("本机IP地址:" + ipv4);
        }
    }
        
    

总结

通过InetAddress类、NetworkInterface类和System类,我们可以在Java中轻松获取本机IP地址。不同的方法适用于不同的场景,可以根据实际需求选择合适的方法。

感谢阅读

感谢您阅读本文,希望本文可以帮助您更好地理解和掌握Java获取本机IP地址的方法。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
用户名: 验证码:点击我更换图片