Java 如何通过internet获取系统IP地址

Java 如何通过internet获取系统IP地址,java,ip-address,Java,Ip Address,由于一个系统上可能连接了许多以太网或wlan,我如何知道哪个网络具有internet连接 Enumeration en; try { en = NetworkInterface.getNetworkInterfaces(); while (en.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) e

由于一个系统上可能连接了许多以太网或wlan,我如何知道哪个网络具有internet连接

Enumeration en;
            try {
                en = NetworkInterface.getNetworkInterfaces();
                while (en.hasMoreElements()) {
                    NetworkInterface ni = (NetworkInterface) en.nextElement();
                    Enumeration ee = ni.getInetAddresses();
                    System.out.println(ni.getName());
                    while (ee.hasMoreElements()) {
                        InetAddress ia = (InetAddress) ee.nextElement();
                        System.out.println(ia.getHostAddress());
                    }
                }
            } catch (SocketException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

请查看以下代码:

public static void main(String[] args) {
        Enumeration en;
        boolean connected;
        int timeOut = 5000;
        try {
            en = NetworkInterface.getNetworkInterfaces();
            while (en.hasMoreElements()) {
                NetworkInterface ni = (NetworkInterface) en.nextElement();
                Enumeration ee = ni.getInetAddresses();
                System.out.println(ni.getName());
                while (ee.hasMoreElements()) {
                    InetAddress ia = (InetAddress) ee.nextElement();
                    ia.getByName("www.google.com");

                    connected = ia.isReachable(timeOut);
                    if (connected == true) {
                        System.out.println(ia.getHostAddress());
                    }
                }

            }
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

请查看以下代码:

public static void main(String[] args) {
        Enumeration en;
        boolean connected;
        int timeOut = 5000;
        try {
            en = NetworkInterface.getNetworkInterfaces();
            while (en.hasMoreElements()) {
                NetworkInterface ni = (NetworkInterface) en.nextElement();
                Enumeration ee = ni.getInetAddresses();
                System.out.println(ni.getName());
                while (ee.hasMoreElements()) {
                    InetAddress ia = (InetAddress) ee.nextElement();
                    ia.getByName("www.google.com");

                    connected = ia.isReachable(timeOut);
                    if (connected == true) {
                        System.out.println(ia.getHostAddress());
                    }
                }

            }
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

getByName被错误地使用,并且没有做任何事情。IsRecable仅发送ICMP回显请求或ping,该请求或ping不会告诉是否存在internet连接。getByName被错误使用,并且不会执行任何操作。isReachable只发送ICMP回显请求或ping,这不会告诉是否存在internet连接。