【问题标题】:iOS NSURLConnection error -1002iOS NSURLConnection 错误 -1002
【发布时间】:2017-01-19 10:47:00
【问题描述】:

我有一个应用程序需要使用 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

我理解这是一个无效的 URL,但是我自己没有将任何 URL 传递给任何一个套接字。

是什么导致了这个问题?我知道连接设备的 IP,所以我应该使用它来连接传输套接字吗?

谢谢!

【问题讨论】:

  • 请不要在您的问题中包含答案。如果您自己解决了问题,您可以发布自己的答案。谢谢。

标签: ios swift networking udp gcdasyncsocket


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-08-06
    • 2018-05-10
    • 2012-10-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 2018-07-29
    相关资源
    最近更新 更多