2011-09-12 18 views
0

ソケットを介していくつかのデータを受信して​​います(開始文字と終了文字がいくつかあります)。私は一度に1バイトを受け取るべきバイト受信機構を使用することができます、いくつかのキューの種類に物を追加し、末尾の文字が見つかるまで次を受信します。それとも、私はチャンクレシーバーを作ってメッセージを終わらせるエンディングキャラクターを見つけることができます...C#ソケット受信バッファサイズコスト

私の質問は、バッファーサイズを増減するコストは何ですか?私の考えでは、バッファサイズを小さくするとメモリが増えるはずですが、バッファを増やすとI/Oパフォーマンスも向上するでしょうか?

+0

そして最も重要なこと...完全なメッセージのサイズはarround 15 KB(平均)です。 – Umer

答えて

2

ソケットアプリケーションでバッファのサイズを変更しないでください。多くの同時操作がないソケットアプリケーションでは問題にならないかもしれません。しかし、慣れるのは簡単ではありません。

実際のデータよりも大きなバッファを扱うことはそれほど難しくありません。すべてのStreamメソッドをチェックするだけです。それらには、処理を開始する場所と処理できるバイト数を示すoffsetおよびcountプロパティがあります。同じことがここにあります。

あなたの質問に答えてください:.NETは新しいメモリ「スロット」を割り当てる必要があり、メモリは各要求ごとに断片化されます。

ソケットが接続されているときに直接15kbのバッファを割り当てるだけです。接続ごとに複数の(非同期の)受信を処理できる場合は、バッファプールを作成します。

+0

1.いいえ、これは初めての活動です...一度だけになる、 2.はい、それほど難しくありません... 3.これは私が探していたポイントです:)ありがとう。 – Umer

関連する問題