Использование 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 теперь используется как собственность по предложению Пола

0 ответов

Другие вопросы по тегам