2010-03-21 85 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