私はクライアントサーバーアプリケーションで作業しています。私のアプリは可変サイズのパケットを扱っています。各パケットはヘッダと可変長のペイロードを持っています。Recvリングバッファーと単純バッファー
私のジレンマは、recvを実行するときにパケットを渡すための最良の方法です。 私が出会ったチュートリアルのほとんどは、リングバッファの使用を提案していますが、私が知る限り、扱うことができる最大のパケットのサイズの2倍のサイズのバッファを使う方が効率的です。私はリングバッファを使用する場合は
私はrecvのための追加のバッファを必要とし、私は私がリングバッファにバッファを挿入するために1つまたは2つmemcpysを行う必要があることを意味リングバッファにバッファをコピーする必要が
私がシングルバッファアプローチを使用する場合、私は完全なパケットを取得したときにrecvコールとmemmoveコールに渡すことができるバッファを1つだけ必要とし、バッファの先頭にデータを移動します。バッファ。
何か問題がありますか?
PS。可変長パケットが扱われるソースコード/サンプルを参考にすれば助かります。
は、このTCPまたはUDPですか? –
@KarolyHorvathそれはTCPです –
なぜ落選ですか? –