.Net TcpClient / Sockets を使用して HTTP クライアントを作成しています。
これまでのところ、クライアントは (TcpClient に GET 要求を書き込んだ後) NetworkStream 応答を反復処理し、ヘッダーを解析し、関連するメッセージ本文のバイト/チャンク バイトを取得することで、Content-Length とチャンクされた応答の両方を処理します。これを行うために、NetworkStream の ReadByte メソッドを使用します。
これはすべて正常に機能しますが、パフォーマンスはアプリケーションの重要な考慮事項であるため、できるだけ迅速かつ効率的にしたいと考えています。
最初にこれには、メッセージ本文の Read と ReadByte の交換 (Content-Length に基づく)、または適切なサイズのバッファーへのチャンクされたメッセージ本文バイトの取得、他のすべての領域 (ヘッダー、チャンク サイズなどの読み取りなど) での ReadByte の使用が含まれます。
最適なパフォーマンスを達成するためにこれを行うためのより良い/さまざまな方法についての考えを知りたいですか? 明らかに、HTTP の主な問題は、取得時に解析されない限り、応答ストリームの長さがわからないことです。
これには、より抽象的なクラス (HttpWebRequest など) を使用しない特定の理由があります (ソケット レベルでより適切に制御する必要があります)。
どうもありがとう、
クリス