質問: ソケットの一回の送信で適切なサイズはありますか? たとえば65535バイト送信したいとします。 下記のように全て送るか、 ``` socket.send(buf, 65535); ``` 下記のように小分けに送るか ``` socket.send(buf, 2048); // bufを2048進めて繰り返す ``` また、適切なサイズがあったとして OpenSSLのssl_write()の場合は事情が少し違うなどの情報もありましたら教えていただけると助かります。 個人的にはTCPの(イーサネットを考慮した)1セグメントは1460バイトらしいので、1460以上の場合は1460単位で分割して送るのが良いような気がしています。
回答: 適切なサイズというのは環境に依存するので回答は難しいと思います。 一般的に言って、バッファサイズに余裕があるなら、まとまった量のデータをわざわざ小分けにして送るメリットはありません。適切なセグメントサイズへの分割は自動で行われますし、Nagleアルゴリズムが有効な場合は小分けにしてもまとめて送信されます。