ソケットを理解するための小さな C プログラムを書いています。recvfrom から返されるデータの最大長は?
recvfrom(生、packet_buffer、buf_size、...);
Linux の最大 buf_size はいくらですか。この size_t に関連する定数はありますか?
ありがとう
ソケットを理解するための小さな C プログラムを書いています。recvfrom から返されるデータの最大長は?
recvfrom(生、packet_buffer、buf_size、...);
Linux の最大 buf_size はいくらですか。この size_t に関連する定数はありますか?
ありがとう
これは実際には直接的な答えではありません...質問に対してやや斜めです。TCP/IP の場合、システムの最大サイズを決定したとしても、それに依存しないようにコードを実装するのがおそらく最善でしょう。ストリーム指向のソケットでは、余分なデータは失われません。したがって、受信関数を再度呼び出して、残りのデータを取得できます。ただし、これはメッセージ指向 (UDP) 接続には当てはまりません。
65535
maxはバイトだと思います。それ自体がプロトコルスタックによって処理されるため、MTUに依存しません。したがって、基本的には、ネットワーク上で送信される効果的なパケットを適切に抽象化できます。
2 ^ 16を選択するのは、TCPウィンドウの最大サイズであるためです(通常は64kbではありませんが、小さいです)。したがって、プロトコルがTCP接続に許可する最大バッファーです。