でマルチキャスト クライアントを構築していますがGCDAsyncUdpSocket
、大量のパケット損失に直面しています。
Wireshark でサーバーを監視し、AirCap で空中の WiFi パケットをキャプチャしましたが、パケットが適切に送信されていることを確認しています。ライブラリからのデバッグ トレースも調べたところ、 4000 などの大きな引数で呼び出されるGCDAsyncUdpSocket
ことがあることがわかりsocket4FDBytesAvailable:
ましたが、ソケットを読み取ると、読み取ったバイト数が少なくなり、おそらく 500 バイトになり、パケットが失われます。ソケットバッファーを増やしましたが、それは役に立ちません。
最後に、偶然かどうかに関係なく、Instruments のタイム プロファイラーを使用していて、パケットを失うたびに DISPATCH_WORKER_THREAD の新しいインスタンスが 1 つ作成されることに気付きました。これは正常ですか?