有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何用JAVA获取局域网的IP地址

我想获取连接到局域网的笔记本电脑的IP地址。此地址必须从JAVA获取

为此,我有以下代码来获取所有IP地址的列表

try
        {
            Enumeration e = NetworkInterface.getNetworkInterfaces();
            while(e.hasMoreElements())
            {
                NetworkInterface n = (NetworkInterface) e.nextElement();
                Enumeration ee = n.getInetAddresses();
                while (ee.hasMoreElements())
                {
                    InetAddress i = (InetAddress) ee.nextElement();
                    String address; 
                    address = i.getHostAddress(); 
                    System.out.println(i.getHostAddress());
                }
            } 
        }
        catch( SocketException SE)
        {
            SE.printStackTrace();
        }

现在我得到了以下IP地址列表

127.0.0.1
0:0:0:0:0:0:0:1
192.168.10.99
fe80:0:0:0:4c55:cf87:67a0:2%10
192.168.115.215
fe80:0:0:0:a972:d8d9:c94c:4263%11
fe80:0:0:0:707c:b434:bf95:4940%12
192.168.15.1
fe80:0:0:0:1d59:66f7:e68e:31d%15 is reachable
fe80:0:0:0:1d59:66f7:e68e:31d%15
192.168.38.1
fe80:0:0:0:553f:f180:b540:75ff%16

但是我怎样才能得到我的局域网IP地址呢?我的局域网ip地址是192.168.10.99


共 (1) 个答案

  1. # 1 楼答案

    这个conde代码片段对我帮助很大

     String IP()
        {
            String IP_address = "";
            int count = 0 ;
            try{
                Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
                while (interfaces.hasMoreElements())
                {
                    NetworkInterface current = interfaces.nextElement();
                  //  System.out.println(current);
                    if (!current.isUp() || current.isLoopback() || current.isVirtual()) continue;
                    Enumeration<InetAddress> addresses = current.getInetAddresses();
                    while (addresses.hasMoreElements()){
                        InetAddress current_addr = addresses.nextElement();
                        if (current_addr.isLoopbackAddress()) continue;
                        if (current_addr instanceof Inet4Address &&  count == 0)
                        {
                            IP_address = current_addr.getHostAddress() ; 
                            System.out.println(current_addr.getHostAddress());
                             count++;
                            break;
                        }
                    }
                }
            }
            catch(SocketException SE)
            {
                SE.printStackTrace();
            } 
            return  IP_address;
        }