在iOS上,如何使用GCDAsyncUdpSocket来侦听两个端口?

时间:2014-07-31 22:19:51

标签: ios udp gcdasyncudpsocket

我正在iOS上使用GCDAsyncUdpSocket(成功)使用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的端口,在这种情况下我的应用程序会看到数据。不过,这是不可取的。

  3. 那么,如何使用GCDAsyncUdpSocket从iOS上的两个UDP端口读取相同IP地址的数据?

0 个答案:

没有答案