如何刷新HttpListener响应流?

时间:2009-04-27 16:09:05

标签: c# .net http flush httplistener

HttpListener为您提供响应流,但调用flush意味着什么(从源代码来看,它很明显,因为它实际上什么都不做)。在HTTP API中挖掘表明这是H​​ttpListener本身的限制。

任何人都知道如何刷新HttpListener的响应流(可能有反射或额外的P / Invokes)?

更新:如果您没有刷新选项或能够定义缓冲区大小,则无法对任何内容进行http流式处理。

2 个答案:

答案 0 :(得分:2)

当Transfer-Encoding设置为Chuncked时,Flush仅适用于大多数System.Net命名空间,否则返回整个请求而Flush实际上什么都不做。至少这是我在使用HttpWebResponse时所经历的。

答案 1 :(得分:0)

我还没有尝试过这个,但是如何为流媒体响应编写单独的TCP服务器呢?然后将请求从HttpListener转发到“内部”tcp服务器。使用此重定向,您可以根据需要重新传输数据。

至于冲洗它,我们只看到这样做就是模拟处理,而不是实际处理。如果您可以入侵HttpResponseStream对象,告诉它处置,取消设置m_Closed标志等,您可能能够刷新流数据。