我正在使用Apple的SamplePing ping路由器本地IPAddress的IPAddress。当我提供现有的本地IPAddress时,SamplePing正在将数据包发送到主机并接收响应数据包。但是,当我在本地路由器中遇到不存在的IP时,它将发送该程序包,并且不会收到任何响应。我怎么才能知道它是否失败了,我怎么才能知道该IP是否存在?
这是我的示例代码:
let hostName = "192.168.1.31"// existing ip in my router
//"192.168.1.32"// non existing ip in my router
var pinger: SimplePing?
var sendTimer: Timer?
override func viewDidLoad() {
super.viewDidLoad()
self.title = self.hostName
let pinger = SimplePing(hostName: self.hostName)
self.pinger = pinger
pinger.delegate = self
pinger.start()
}
func simplePing(_ pinger: SimplePing, didStartWithAddress address: Data) {
self.pinger!.send(with: nil)
}
func simplePing(_ pinger: SimplePing, didFailWithError error: Error) {
// NSLog("failed: %@", MainViewController.shortErrorFromError(error: error))
print(error.localizedDescription)
pinger.stop()
}
func simplePing(_ pinger: SimplePing, didSendPacket packet: Data, sequenceNumber: UInt16) {
NSLog("#%u sent", sequenceNumber)
}
private func simplePing(pinger: SimplePing, didFailToSendPacket packet: NSData, sequenceNumber: UInt16, error: NSError) {
print(error.localizedDescription)
}
func simplePing(_ pinger: SimplePing, didReceivePingResponsePacket packet: Data, sequenceNumber: UInt16) {
NSLog("#%u received, size=%zu", sequenceNumber, packet.count)
pinger.stop()
}
func simplePing(_ pinger: SimplePing, didReceiveUnexpectedPacket packet: Data) {
NSLog("unexpected packet, size=%zu", packet.count)
}
这是成功案例的回应:
2018-11-15 18:33:38.159301+0530 SimplePingApp[16332:534091] #0 sent
2018-11-15 18:33:38.567979+0530 SimplePingApp[16332:534091] #0 received, size=64
2018-11-15 18:33:38.568277+0530 SimplePingApp[16332:534091] stop
这是针对失败案例的回复:
2018-11-15 18:33:38.159301+0530 SimplePingApp[16332:534091] #0 sent