我正在尝试使用 Apple 的类:Simple Ping,但我无法使其正常工作。
当我运行示例 mac os x 项目时,它正在工作:
2015-06-17 00:03:22.569 SimplePing[20386:3133535] ping 192.168.1.102
2015-06-17 00:03:22.569 SimplePing[20386:3133535] #0 已发送
2015-06-17 00:03:22.570 SimplePing[20386:3133535] #0 收到
2015-06-17 00:03:23.570 SimplePing[20386:3133535] #1 已发送
2015-06-17 00:03:23.571 SimplePing[20386:3133535] #1 收到
etc..
但是当我从我的 ios (swift) 应用程序执行此操作时:
let pinger = SimplePing(hostName: "192.168.1.102")
pinger.delegate = self;
pinger.start()
do {
NSRunLoop.currentRunLoop().runMode(NSDefaultRunLoopMode, beforeDate: NSDate.distantFuture() as! NSDate)
} while(pinger != nil)
不确定是否需要 do..while 循环 - 可能不需要。不管怎样,我也尝试过没有它。
我已将 SimplePingDelegate 添加到我的类中:
func simplePing(pinger: SimplePing!, didFailToSendPacket packet: NSData!, error: NSError!) {
println("didFailToSendPacket")
}
func simplePing(pinger: SimplePing!, didFailWithError error: NSError!) {
println("didFailWithError")
}
func simplePing(pinger: SimplePing!, didReceivePingResponsePacket packet: NSData!) {
println("didReceivePingResponsePacket")
}
func simplePing(pinger: SimplePing!, didReceiveUnexpectedPacket packet: NSData!) {
println("didReceiveUnexpectedPacket")
}
func simplePing(pinger: SimplePing!, didSendPacket packet: NSData!) {
println("didSendPacket")
}
func simplePing(pinger: SimplePing!, didStartWithAddress address: NSData!) {
println("didStartWithAddress")
}
所以它给了我输出:
2015-06-17 00:32:12.368 可用[938:150352] CFHostStartInfoResolution
2015-06-17 00:32:12.374 可用[938:150352] >HostResolveCallback
didStartWithAddress
不调用其他函数。为什么?
顺便提一句。我还尝试将 pinger 移动到类变量中,如下所示:
var pinger: SimplePing?
完全没有区别。
我怎样才能解决这个问题?