【问题标题】:How to fetch all IP addresses on network using java?如何使用java获取网络上的所有IP地址?
【发布时间】:2015-09-18 18:53:14
【问题描述】:

我正在使用 InetAddress 类来获取我网络上的 IP 地址。

问题是有时我无法获取某些地址,有时 InetAddress 无法从网络获取单个 IP。

可能是什么问题? 谢谢

我试过下面的代码:

public void fatchAllNetworkIP() throws UnknownHostException, IOException
{
    System.out.println("Fetching IP...");

    InetAddress localhost = InetAddress.getLocalHost();
    byte[] ip = localhost.getAddress();

    for (int i = 1; i <= 254; i++)
    {
        ip[3] = (byte)i;
        InetAddress address = InetAddress.getByAddress(ip);

        if(address.isReachable(1000))
        {
            //JOptionPane.showMessageDialog(null, address);
            System.out.println("IP Address "+i+"is "+address);
        }
    }
}

【问题讨论】:

    标签: java network-programming


    【解决方案1】:

    试试java.net.NetworkInterface,获取所有可用的NetworkInterfaces,然后获取所有附加的InetAddresses

    【讨论】:

      【解决方案2】:

      用这个例子试试 192.168.x.x,

      public static void main(String args[]) throws UnknownHostException {
      
              byte[] ip = {(byte)192, (byte)168, 0, 0}; //Note: for 192.168.0.x addresses  
              for (int i = 1; i <= 254; i++)  
              {  
                  ip[3] = (byte) i;  
                  InetAddress address = InetAddress.getByAddress(ip);  
                  System.out.printf("InetAddress1: %s\n", address);
              } 
      
      
          }
      

      【讨论】:

        【解决方案3】:

        您需要更改超时时间,以便系统可以检查是否有来自网络机器的回复..

        if(address.isReachable(2000)) {
            System.out.println("IP Address "+i+"is "+address);
        }
        

        如果同样的问题再次发生,请尝试增加超时时间..

        【讨论】:

          猜你喜欢
          • 2018-09-01
          • 2016-11-02
          • 2013-03-31
          • 2020-09-23
          • 1970-01-01
          • 2014-11-05
          • 2015-03-01
          • 2011-11-04
          • 2012-08-10
          相关资源
          最近更新 更多