質問: ストリームからすべてのデータを取得する方法を知りたいです。
Asynchronous Client Socket のBeginSend
メソッドからBeginReceive
クライアント側のメソッドにデータを送信しています。現在の目標は、ストリームを介して渡されたすべてのバイトを取得することです。
StateObject
のバッファ フィールド タイプを含むクラスを作成しました。このクラスbyte[]
は固定長です (現在は 2048 に設定されています)。
では、取得したバイトをこのフィールドに渡すにはどうすればよいでしょうか? データは一度にすべてではなく、バラバラになっていることに注意してください。
サーバーから送信されたすべてのバイトを元に戻す必要があります。
Array.Copy()
orメソッドを使用できますBuffer.BlockCopy
か?
ポイントは、複数の条件を考慮する必要があることです。
buffer[2048] のすべてのインデックスが 0 に設定されていると仮定します
最初のコピーでは、開始インデックスは0になります(その後、ストリームから取得したバイトを追加します)
次のすべてのコピーでは、開始インデックスは配列の最初のゼロでなければなりません (つまり、配列にコピーされた以前のすべてのバイトの合計 - 1)。
それを達成する方法は?