Использование CocoaAsyncSocket для получения UDP в Swift iOS
Я пытаюсь получать широковещательные UDP-пакеты на iOS. Я проверил, что пакеты отправляются (я вижу их в другом приложении iOS на том же устройстве).
CocoaAsyncSocket казался самой простой библиотекой для этого. Я добавил фреймворк в свой проект с использованием Carthage. Следуя примеру в Objective-C, у меня есть приложение для 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
теперь используется как собственность по предложению Пола