簡體   English   中英

如何使用java獲取網絡上的所有IP地址?

[英]How to fetch all IP addresses on network using java?

我正在使用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.net.NetworkInterface ,獲取所有可用的NetworkInterfaces,然后獲取所有附加的InetAddresses

試試這個例子192.168.xx,

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);
        } 


    }

您需要更改超時,以便系統可以檢查是否有來自網絡機器的回復。

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

如果再次出現同樣的問題,請嘗試增加超時時間..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM