0

私は C クライアント サーバー アプリケーションを書いています。

両者は通信するために char バッファを交換します。

これらのバッファの適切なサイズは? ストリーム指向ソケットの(または
) によって読み取り (または書き込み) 可能なバイト数に制限はありますか?read()write()

4

2 に答える 2

2

高スループットと低レイテンシのどちらを目指しているかによって異なります。高スループットには大きなバッファーを、低レイテンシーには小さなバッファーを使用します。x バイトのバッファを送信する場合、読み取り関数と書き込み関数は、すべての x バイトを送信することを保証しないことにも注意してください。戻り値を確認して、送信/受信されたバイト数を確認してください。残りの送信/受信を続けます (これは、バッファサイズ x 全体を送信/受信するまで while ループで行われることがよくあります)。

于 2013-02-26T15:44:53.797 に答える
2

コードを正しく記述していれば、接続が維持されている限り制限はありません。それがストリーム接続の意味です。

あなたが提供した/要求したすべてのデータを書き込んだり読んだりする前に、両方とも戻ることができることwrite()を覚えておいてください。read()その場合、戻り値はどれだけの書き込み/読み取りが行われたかを示しており、関数を再度呼び出して書き込み/読み取りを行うのはあなたの責任です。

于 2013-02-26T15:44:27.520 に答える