【发布时间】:2012-02-15 16:52:52
【问题描述】:
我正在开发 ping 应用程序,其中有一个进度条,显示 ping 范围 IP 的进度。
这是我计算 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 个地址,但我只是不想限制这个程序的任何功能。
有什么想法吗?
【问题讨论】:
-
将它们转换为int,并计算差异。有很多重复。
-
还在从事那个项目吗? :D
-
@BlackBear,我稍微休息了一下,只是想完善它 :) 我注意到如果范围太大,我的程序会卡住 10 分钟,所以我想解决这个问题。
-
“可怕的时间”是多少?在我的电脑上它需要不到 1 毫秒。
-
@Gabe:我想他说的是总运行时间 ip 地址 ping 时间包括在内