C# HttpWebRequestGetResponseStream是如何工作的

C# HttpWebRequestGetResponseStream是如何工作的,c#,.net,C#,.net,假设我创建了一个HttpWebRequest,并调用它的GetResponseStream方法。当我尝试读取流时,是否所有数据都已复制到本地缓冲区,或者它是通过跨线读取来工作的?如果查看,您会发现需要先调用.GetResponse(),这将回答您的问题。GetResponseStream方法返回抽象类的特定实现,它是一个抽象类。这种类型的流绑定到套接字。它是指向TCP/IP套接字流的指针。如果服务器向其写入了一些数据,当客户端开始从该流读取数据时,它将只读取套接字上可用的数据,如果您尝试读取的数

假设我创建了一个
HttpWebRequest
,并调用它的
GetResponseStream
方法。当我尝试读取流时,是否所有数据都已复制到本地缓冲区,或者它是通过跨线读取来工作的?

如果查看,您会发现需要先调用
.GetResponse()
,这将回答您的问题。

GetResponseStream方法返回抽象类的特定实现,它是一个抽象类。这种类型的流绑定到套接字。它是指向TCP/IP套接字流的指针。如果服务器向其写入了一些数据,当客户端开始从该流读取数据时,它将只读取套接字上可用的数据,如果您尝试读取的数据超过当前可用的数据,则会阻止,直到服务器向套接字写入更多数据为止


因此,如果我们假设服务器已经向套接字写入了5个字节,如果您尝试从客户端的流中读取5个字节,您将能够检索到这5个字节,但是如果您尝试读取6个字节,则读取操作将被阻止,直到服务器再发送一个字节或超时为止。

好的,足够公平。但假设我们希望在数据传输过程中使用它。这在C#中可能吗?如果在任何语言中都不可能,那么当您调用
GetResponseStream
时,它是否只是得到某种类型的句柄,并且只有在您读取流之后,它才会发送每个字节,或者调用该方法时会下载它,并且一旦完成,您就能够与它交互?除非你能提供一个有用的答案或者删除这个,否则我会投反对票。