在SamplePing中未接收到Ping响应数据包

时间:2018-11-15 13:01:35

标签: iphone swift networking ping

我正在使用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

0 个答案:

没有答案