SO_SNDBUF
を設定した場合の効果 オプションは TCP と UDP で異なります。
- UDP の場合、データグラムのサイズの制限を設定します 、つまり、それより大きいものは破棄されます。
- TCP の場合、これは特定のソケットのカーネル内バッファのサイズを設定するだけです (ページ境界への丸めと上限付き)。
TCP について話しているように見えるので、観察している効果は、ソケットがブロッキング モードになっていることで説明されます。 、だから send(2)
カーネルがすべてのデータを受け入れることができるまで、および/またはネットワーク スタックが非同期的にデータをデキューしてネットワーク カードにプッシュするまでブロックします。
また、TCP はストリーム プロトコルです。 、「メッセージ」構造を保持しません。 1 send(2)
複数の recv(2)
に対応可能 反対側にあり、その逆です。バイトストリームとして扱います。
SO_SNDBUF
ソケット実装が内部的に使用するバッファを構成します。ソケットが非ブロッキングの場合、構成されたサイズまでしか送信できません。ソケットがブロッキングの場合、呼び出しに制限はありません。