1

ソケットを理解するための小さな C プログラムを書いています。recvfrom から返されるデータの最大長は?

recvfrom(生、packet_buffer、buf_size、...);

Linux の最大 buf_size はいくらですか。この size_t に関連する定数はありますか?

ありがとう

4

2 に答える 2

1

これは実際には直接的な答えではありません...質問に対してやや斜めです。TCP/IP の場合、システムの最大サイズを決定したとしても、それに依存しないようにコードを実装するのがおそらく最善でしょう。ストリーム指向のソケットでは、余分なデータは失われません。したがって、受信関数を再度呼び出して、残りのデータを取得できます。ただし、これはメッセージ指向 (UDP) 接続には当てはまりません。

于 2010-02-21T14:31:46.423 に答える
0

65535maxはバイトだと思います。それ自体がプロトコルスタックによって処理されるため、MTUに依存しません。したがって、基本的には、ネットワーク上で送信される効果的なパケットを適切に抽象化できます。

2 ^ 16を選択するのは、TCPウィンドウの最大サイズであるためです(通常は64kbではありませんが、小さいです)。したがって、プロトコルがTCP接続に許可する最大バッファーです。

于 2010-02-21T13:57:25.773 に答える