ソケットを介して送信される 100 バイトを考慮してください。TCP ソケットでrecv()
は、長さ 50 で呼び出すと最初の 50 バイトが取得され、再度呼び出すと 2 番目の 50 バイトが取得されます。UDP ソケットでrecvfrom()
は、長さ 50 で呼び出した場合、最初の 50 バイトを取得しますが、2 番目の 50 バイトを取得する方法がありませんrecvfrom()
。次のデータグラムが受信されるまで、後続の呼び出しはブロックされます。
これは、UDP データグラム全体を受信したい場合、サイズに関係なく、64k のバッファー (UDP で許可されている最大値) を割り当てなければならないということですか? connect()
UDP ソケットの場合、動作は変わりますか? それとも、UDP を介して動作するプロトコルは、通常、バッファに使用する必要がある既知の最大パケット サイズを伴いますか?