Я использую Apple SamplePing для проверки связи с IP-адресом локального IP-адреса моего маршрутизатора.Когда я дал существующий локальный IP-адрес, 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