1

GCDAsyncUdpSocket次のように、UDPを使用してデータを送受信するためにiOSで(正常に)使用しています:

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. デバイスが 2 番目のデータ ストリームを送信するために使用するポートを 3054 に切り替えることができます。この場合、アプリはデータを認識します。ただし、これは望ましくありません。

では、iOS で を使用して同じ IP アドレスの前にある 2 つの UDP ポートからデータを読み取るにはどうすればよいGCDAsyncUdpSocketでしょうか。

4

0 に答える 0