iOS NSURLConnection错误-1002

时间:2016-09-12 03:02:37

标签: ios swift networking udp gcdasyncsocket

我的应用需要使用UDP与其他设备通信。 我正在使用GCDAsyncUDPSocket框架。

我不知道在我第一次收到14550端口之前需要发回的端口。

为了解决这个问题,我实现了2个不同的套接字,一个发送套接字和一个接收套接字。

首先,我在接收套接字上初始化两个套接字和打开端口14550。

func wifiConnect() {
    receiveSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
    transmitSocket = GCDAsyncUdpSocket(delegate: self, delegateQueue: dispatch_get_main_queue())
    do {
        try receiveSocket!.bindToPort(14550)
        try transmitSocket!.enableBroadcast(true)
        try receiveSocket!.beginReceiving()
    } catch _ as NSError { print("Issue with setting up listener") }
}

然后我等到该端口收到数据,然后连接到发送套接字的发送方地址。

    func udpSocket(sock: GCDAsyncUdpSocket, didReceiveData data: NSData, fromAddress address: NSData, withFilterContext filterContext: AnyObject?) {
    if !udpConneced {
        do {
            try transmitSocket?.connectToAddress(address)
        } catch let error {
            NSLog("Error connecting to address. %@",String(error))
            return
        }
    }
    dataReceived(data)
}

连接后udpConnected设置为true并运行一个函数。

    func udpSocket(sock: GCDAsyncUdpSocket, didConnectToAddress address: NSData) {
    udpConnected = true
    didConnect()
}

但是,有时整个应用程序崩溃并发出此错误

NSURLConnection finished with error - code -1002

我理解为无效的网址,但是我没有将任何网址传递给任何一个套接字。

导致此问题的原因是什么?我知道连接设备的IP,所以我应该用它来连接传输插座吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

解决了这个问题。原来testflight没有报告显示完整的崩溃日志。我设法自己造成了崩溃,并发现它与NSURL或GCDASYNC无关。它是由一个变量为零而在极少数情况下被调用引起的。