我正在尝试在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
现在用作保罗建议的财产