如何更有效地从2个IP地址计算IP数量?

时间:2012-02-15 16:52:52

标签: c# ip range ping

我正在开发ping应用程序,其中我有一个进度条,显示范围IP的ping操作进度。

这是我如何计算要设置为进度条最大值的IP范围:

pbProgress.Maximum = 1 + (IPAddress.NetworkToHostOrder
    (BitConverter.ToInt32(IPAddress.Parse(txtTo.Text).GetAddressBytes(), 0)) -
    IPAddress.NetworkToHostOrder(BitConverter.ToInt32
    (IPAddress.Parse(txtFrom.Text).GetAddressBytes(), 0)));

这里的问题是我将范围从0.0.0.0开始到1.0.0.0,需要花费大量时间来计算范围,因此将值传递给进度条最大值。有没有更好的解决方案来更快地计算IP数量?

我总是可以将IP地址限制为例如ping到10k地址,但我只是不想限制此程序的任何功能。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您的问题是您正在创建一些包含每个IP地址的数据结构,如列表或数组。你需要做的就是用for循环来迭代它们,这样它们就可以根据需要而不是在你开始之前生成。

由于您要使用多个线程,请尝试使用Parallel.For

之类的内容