質問: Android - DatagramSocketの最大バッファサイズを送信する UDP経由でデータを送信するアプリがあります。 私は最大/最適な送信バッファサイズが何であるかを調べようとしています。 私は2kのパッケージを送るのに成功しましたが、大きなパケットが問題でした。 私はgetSendBufferSizeを使って送信バッファサイズを調べました。 110592バイトを返しました。 それに近いものを送信しようとすると、エラーは表示されませんが、データはサーバに送られます。 どのように "許可された"送信バッファサイズが分かっていますか? ありがとう。
回答: DatagramPacketはUDPベースのソケット上の単なるラッパーであるため、通常のUDPルールが適用されます。 完全なIPデータグラムの理論上の最大サイズは64キロバイトですが、576バイトしかルーティングされません。任意の所定のネットワークパス上で、最小送信単位が最小のリンクが実際の制限を決定します。 (1500バイト、ヘッダーは一般的な最大値ですが、いくつのヘッダーが存在するかを予測して、メッセージを約1400バイトに制限するのが最も安全です)。 Reference : Java DatagramPacket (UDP) maximum send/recv buffer size