ソケットスキームでのバッファの使用を理解しようとしています。これが私が理解していることであり、誰かが私が正しいかどうかを教えてくれたり、誤解している可能性のある場所にフィードバックをくれたりしたら、それは素晴らしいことです.
MSDN の例で詳述されている非同期ソケットの使用(以下はすべてその例を参照しています)
以下は、私がポイントを理解している状態オブジェクトについて説明しています。
// State object for reading client data asynchronously
public class StateObject
{
// Client socket.
public Socket workSocket = null;
// Size of receive buffer.
public const int BufferSize = 1024;
// Receive buffer.
public byte[] buffer = new byte[BufferSize];
// Received data string.
public StringBuilder sb = new StringBuilder();
}
現在、バッファは 1024 バイトであると表示されています。データを受信するとき、一度に 1024 バイトしか要求していませんか? また、非同期メソッド ReceiveCallback では、1024 のみを要求し、これがすべてのデータではない可能性があるため、次の 1024 を取得します。
基本的に、ソケットに送信された入力ストリームは 1024 バイトのチャンクで読み取られ、エンドポイントに到達するまで読み取りを続けます (独自の定義による)。