【发布时间】:2015-11-28 04:54:24
【问题描述】:
我有一种情况,我必须搜索 **router ** 的 IP 地址,我只知道它的范围是从 163.289.2.0 到 163.289.2.255。 我知道这不是搜索的好方法。
for i in 1... 255 {
var str = "163.289.2." + "i"
var tempIP = Ping.getIPAddress(str)
if(tempIP == true)
{
break;
}
}
现在我的问题是我的自定义类 Ping.getIPAddress() 需要 3 秒才能获得给定 IP 值的结果。因此,对于 255 次搜索,大约需要 765 秒(12.75 分钟)。我有限制,搜索应该在最多 2 分钟内完成。那么无论如何我可以使用 swift 在 iPhone 中实现这一点。
我必须只使用这个自定义函数 Ping.getIPAddress() 如果给定的 IP 地址存在则返回 true,否则返回 false。
请提供解决此问题的示例或参考或方法。
使用 NSOperationQueue 并将 MaxConcurrentOperationCount 设置为 10 会很好吗?
【问题讨论】:
-
Ping.getIPAddress()到底是什么?它似乎是同步的,但您可以同时进行各种后台调用。 -
@Larme - 此函数将查找给定的 IP 地址。如果存在则返回 true,如果不存在则返回 false。
-
你的
for loop应该从0开始,而不是1。 -
首先你使用的地址是非法的。 289 不是有效的 IP 条目。必须小于 255。此路由器是您连接的主路由器吗?如果是这样,那么它可能是您设备的默认网关,所以只需查找一下?此外,如果您是该网络的一部分,您只需向网络广播地址发送一个 ping,然后等待查看谁回复。
-
@appzYourLife 从 0 开始对于从 0.1 开始的 IP 地址是不正确的。它应该停在 254 虽然 255 将是网络广播地址 8^)。
标签: ios iphone algorithm swift search