使用CocoaAsyncSocket在Swift iOS中接收UDP

时间:2016-05-18 02:31:09

标签: ios objective-c swift udp cocoaasyncsocket

我正在尝试在iOS上接收广播UDP数据包。我已经验证了数据包正在发送(我可以在同一设备上的另一个iOS应用中看到它们)。

CocoaAsyncSocket似乎是最直接的库。我使用Carthage将框架添加到我的项目中。在Objective-C中的example之后,我有一个iOS应用程序,其中没有其他内容,并且正在加载此视图:

import UIKit
import CocoaAsyncSocket

class FirstViewController: UIViewController 
    var sock:AsyncUdpSocket?
    override func viewDidLoad() {
        super.viewDidLoad()
        if (sock == nil){
            sock = AsyncUdpSocket(delegate: self)
        }
        do{
            try sock!.bindToPort(54545)
            try sock!.enableBroadcast(true) // Also tried without this line
            sock!.receiveWithTimeout(10,tag: 0)
        } catch {
            print("error")
        }
        print("View Loaded...")
    }

    func onUdpSocket(cbsock:AsyncUdpSocket!,
                     didReceiveData data: NSData!){
        print("Recv...")
        print(data)
        cbsock.receiveWithTimeout(10, tag: 0)
    }
}

在模拟器中,或在设备上,在调试控制台中,我看到“查看已加载...”消息,但回调中没有任何内容,既不是“Recv ...”也不是数据。似乎没有调用回调,但我也没有收到任何错误。我尝试了其他的超时,以及各种调整,比如公开功能和课程,但没有运气。

我用Python编写了一个接收器,但这让我很难过。

编辑:sock现在用作保罗建议的财产

0 个答案:

没有答案