2010-03-21 128 views
4

比方說,我有兩個IP地址(在.NET中,System.Net.IPAddress類)。我如何迭代兩個給定地址之間的所有IP地址?迭代IP地址

例如,讓一個地址爲192.168.1.1,另一個地址爲192.168.2.3。我想以某種方式迭代所有地址之間的地址並將其打印到控制檯。

謝謝。

+7

您需要該子網才能知道兩個IP之間的有效地址 – 2010-03-21 19:57:33

+1

我想不出有多少「好」的理由來掃描網絡以獲取有效的IP地址,但我可以想到很多惡意的IP地址。 – Randolpho 2010-03-21 19:59:05

+1

@Randolpho - 這個例子指定了內部網絡地址,所以很可能有一個「好」的理由。 – ChrisF 2010-03-21 20:00:11

回答

0

最後,我結束了使用this answer中提供的方法。

這有點複雜,但它運作良好,沒有使用不推薦使用的屬性。它將IP地址轉換爲uint,遞增它們,然後將它們轉換回來。

-2

IPv4地址基本上是Int64的不同符號。因此,您可以執行以下操作:

for (var i = fromAddress.Address; i <= toAddress.Address; i++) 
{ 
    Console.WriteLine(new IPAddress(i)); 
} 

地址屬性已被棄用,但這可能不是您的問題。

+1

這不起作用。假設我想從192.168.1.1增加到192.168.1.3。 'fromAddress.Address'爲16885952,'toAddress.Address'爲50440384.如果我運行for循環,則輸出192.168.1.1; 193.168.1.1; 194.168.1.1 ...並且它一直在繼續。 – Ove 2013-01-15 19:51:47

+0

這只是造成無限循環,導致系統停止。 – 2014-03-19 06:05:31

+0

是的,這是行不通的,因爲Windows是小端,網絡地址是大端。 – 2017-12-08 23:43:01