我在嘗試使用Apple的類:簡單的Ping,但是我無法得到這個工作。在Swift中使用簡單的Ping(iOS)
當我跑步例如Mac OS X的項目它的工作:
2015-06-17 00:03:22.569 SimplePing [20386:3133535]查驗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接收
等。
但是,當我這樣做,從我的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)
不確定是否.. 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
其他函數不被調用。爲什麼?
Btw。我也嘗試將pinger移入類變量,如下所示:
var pinger: SimplePing?
沒有任何區別。
我該如何解決這個問題?
就是這樣!我錯過了sendPingWithData!不知道爲什麼蘋果的例子沒有,並且工作.. – Makalele
你能解釋這個片段嗎?做{ 如果(canStartPinging){ pinger.sendPingWithData(無)//對於我來說,在這裏崩潰} NSRunLoop.currentRunLoop()runMode(NSDefaultRunLoopMode,beforeDate:NSDate.distantFuture()爲的NSDate)//如果我不要使用這個代表永遠不會調用 } while(pinger!= nil) –
@Artal - 你知道我們如何用簡單的Ping來ping多個IP地址嗎? –