簡體   English   中英

獲取兩個IP地址之間的IP地址列表

[英]Getting IP address list between two IP addresses

我正在編寫一個程序,該程序從用戶獲取“從IP地址”和“至IP地址”,並顯示它們之間的IP地址列表。 例如,如果用戶給出了10.0.0.1和10.0.0.5,那么我將顯示這兩個之間的五個IP地址。 我想到的當前解決方案是:

  1. 要獲得所有IP地址的列表,然后查找結果IP地址列表
  2. 使用嵌套循環

在這些之間我應該采用什么解決方案(或提出更好的解決方案)? 對於第一個解決方案,IP地址表/列表的鏈接是什么?

用JavaScript或Java解決方案是什么?

首先用分割IP地址. 從第一個IP地址開始,將第四部分增加到255,然后將1增加到第三部分,並將第四部分設置為1,直到到達IP地址為止。

  • IP地址字節->位-> Int32
  • 從: 10.0.10.10 > 00001010 00000000 00001010 00001010 > 167774730
  • 收件人: 10.1.45.1 > 00001010 00000001 00101101 00000001 > 167849217
  • 從From到To開始計數,只檢查不需要的字節1111111100000000

就這樣。

“點”字是針對人類的。 對於計算機,它是一個4字節數字。 因此將其解析為一個數字。 然后,您只需增加一個數字直到達到界限,就可以獲取范圍內的所有地址,然后將其格式化回輸出。

我正在嘗試更新的jsFiddle ,最后來到了下面的解決方案。 以下代碼適用於所有IP地址。 您必須以十六進制形式提供起始和結束IP地址(因為這很容易,我沒有為此編寫代碼)。

var startIp = 0x0A000001,
endIp = 0x0A000F05;

var  temp, list = [],str;
for(var i=startIp ; i <= endIp ; i++){
    temp = (i).toString(16);
    str ='';
    if(temp.length == 7){
        temp = "0"+temp;
    }

    for(var k=temp.length-1; k  >= 0 ; k-=2){
       str = parseInt(temp[k-1] + "" + temp[k], 16) +"." + str ;
    }
    document.write(temp + " " + str+ "<br>");
    list.push(str.substring(0, str.length-1));
}

?

列出所有IP地址,然后查找所需的IP地址實在是太過分了。 另外,我相信您甚至可以在無需購買一些額外硬盤驅動器的情況下存儲該列表。

只需使用嵌套循環並生成您要查找的IP地址即可。

如果您知道足夠的地址(從網絡,文件系統或用戶輸入)獲取地址,則可以通過減法測試地址本身,並在那里獲取IP地址的數量。

這是簡化的,但是如果您知道地址: 000044-000002 = 000042 ,則可以得到。

暫無
暫無

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

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