На iOS, как вы используете GCDAsyncUdpSocket для прослушивания двух портов?

Я использую GCDAsyncUdpSocket на iOS (успешно) отправлять и получать данные, используя UDP, запустив его следующим образом:

udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate: self delegateQueue: dispatch_get_main_queue()];
NSError *error;
BOOL result = [udpSocket bindToPort: 3054 error: &error];

Устройство отправляет данные обратно на порт 3054, который я вижу с помощью делегата вызова udpSocket:didReceiveData: fromAddress:withFilterContext:, Устройство также отправляет информацию о порте 9750, и я бы тоже хотел это увидеть. Я пытался не привязываться к определенному порту, но это не удается по другим причинам. Я также попытался запустить отдельный сокет, используя

udpDataSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate: self delegateQueue: dispatch_get_main_queue()];
NSError *error;
BOOL result = [udpDataSocket bindToPort: 9750 error: &error];

Хотя эти вызовы выполняются без ошибок, я не получаю данные от порта 9750.

Я точно знаю, что данные отправляются; это проблема со стороны iOS. Я знаю это, потому что:

  1. Логический анализатор видит, что данные поступают на устройство для передачи через порт 9750; это наводит на размышления, но не является окончательным.

  2. Я могу переключить порт, который устройство использует для отправки второго потока данных, на 3054, и в этом случае мое приложение видит данные. Это нежелательно, хотя.

Итак, как можно прочитать данные с двух UDP-портов на один и тот же IP-адрес на iOS, используя GCDAsyncUdpSocket?

0 ответов

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