から、私はHTTPリクエスト と読むには基本的な流れ(httpRequestStream)
var s=new HttpListener().GetContext().Request.InputStream;
の流れである基本的な流れを持って、私は私が送ってきたので、文字以外のコンテンツが含まれている(ストリームを読みたいですパケット)
我々はStreamReaderをすることで、このストリームをラップするとき、我々はそれが全体の流れを読み、文字列を返すことができるのStreamReaderのReadToEnd()関数を使用して...
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://127.0.0.1/");
listener.Start();
var context = listener.GetContext();
var sr = new StreamReader(context.Request.InputStream);
string x=sr.ReadToEnd(); //This Workds
しかし、それは我々がStremReaderを使用するカント文字以外のコンテンツを持っているので、(私はすべてのエンコーディングmechanisms..using文字列がちょうど間違ってみました).AND私は、ストリーム、InputStreamの長さを取得カントので、私は機能
context.Request.InputStream.Read(buffer,position,Len)
を使用カント.Lengthは常に例外をスローし、使用することはできません。そして、[サイズ] [ファイル]のような小さなプロトコルを作成して、最初のサイズのファイルを読み込みたくありません。何とかStreamReaderで長さを取得できます。方法を知りたいダグラス
、 は私もこれを試してみましたが、それは私が次FileStream fs = new FileStream("C:\\cygwin\\home\\Dff.rar", FileMode.Create);
byte[] file = new byte[1024 * 1024];
int finishedBytes = ss.Read(file, 0, file.Length);
while (finishedBytes > 0)
{
fs.Write(file, 0, finishedBytes);
finishedBytes = ss.Read(file, 0, file.Length);
}
fs.Close();
おかげジョンことによってそれを解決してきました
List<byte> bb = new List<byte>();
var ss = context.Request.InputStream;
byte b = (byte)ss.ReadByte();
while (b >= 0)
{
bb.Add(b);
b = (byte)ss.ReadByte();
}
動作しませんでした
を試してみてください。 2つのヒント: (1)FileStreamを自動的に閉じるために 'using'ステートメントを使用する方法を学びます。 (2)大量のbyte []バッファは必要ありません。なぜなら、1回のRead呼び出しで大量のデータを読み込むことはまずないからです。おそらく約8192のサイズで十分でしょう。 – Douglas