3

私の最近のプロジェクトでは、UDP プロトコルを使用してデータを送信する必要があります。を使用してデータを送信する場合size = s.sendto(data, (<addr>, <port>))、UDP プロトコルはデータが 1 つの UDP パケットにパックされることを保証しますか? もしそうなら、size == len(data)常にTrueですか?私が誤解したことはありますか?

より正確には、「sendto()」はデータをいくつかの小さなチャンクに分割し、各チャンクを UDP パケットにパックして送信しますか?

4

2 に答える 2

0

最後に、「UNIX ネットワーク プログラミング」の第 2.11 章 Buffer Sizes and Limitations、Section UDP Output から回答を得ました。

アプリケーションが UDP ソケットに書き込むときに必要なステップとバッファー。

今回は、実際には存在しないため、ソケット送信バッファーを破線のボックスとして表示します。UDP ソケットには送信バッファー サイズ (SO_SNDBUF ソケット オプション、セクション 7.5 で変更できます) がありますが、これは単にソケットに書き込むことができる最大サイズの UDP データグラムの上限です。アプリケーションがソケット送信バッファ サイズより大きいデータグラムを書き込むと、EMSGSIZE が返されます。

于 2014-03-13T02:06:39.763 に答える