0

を作成して、そのメソッドHttpWebRequestを呼び出したとしますGetResponseStream。ストリームを読み込もうとすると、すべてのデータがすでにローカルバッファーにコピーされていますか、それともネットワークに接続されたときに読み取ることで機能しますか?

4

2 に答える 2

2

GetResponseStreamメソッドは、であるStream抽象クラスの特定の実装を返しますNetworkStream。このタイプのストリームはソケットにバインドされます。これは、TCP/IPソケットストリームへのポインタです。サーバーがサーバーにデータを書き込んだ場合、クライアントがこのストリームから読み取りを開始すると、ソケットで使用可能なデータのみが読み取られ、サーバーがより多くのデータを書き込むまで、現在使用可能なデータよりも多くのデータを読み取ろうとするとブロックされます。ソケットに。

したがって、サーバーがすでに5バイトをソケットに書き込んでいると仮定すると、クライアントのストリームから5バイトを読み取ろうとすると、それらの5バイトを取得できますが、6バイトを読み取ろうとすると読み取りサーバーがもう1バイトを送信するか、タイムアウトするまで、操作はブロックされます。

于 2013-02-26T22:00:28.657 に答える
-1

その例を見ると、最初に電話する必要があることがわかります.GetResponse()。これで質問に答えられます。

于 2012-07-06T16:10:14.967 に答える