首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpListener正在将数据写入响应输出流

HttpListener正在将数据写入响应输出流
EN

Stack Overflow用户
提问于 2013-08-02 16:04:36
回答 1查看 7.1K关注 0票数 3

我有基于HttpListener的小型本地web服务器。服务器向本地客户端应用程序提供文件,解包和写入文件

代码语言:javascript
复制
response.OutputStream;

但有时文件(视频)很大,我不认为总是将所有文件字节复制到输出流(内存)中是个好主意。我想将服务文件流连接到响应输出流,如下所示:

代码语言:javascript
复制
response.OutputStream = myFileStream;

但是- -ok- response.OutputStream是只读的,所以我只能写字节--有没有办法进行某种部分写入(流)?

致以问候。

EN

回答 1

Stack Overflow用户

发布于 2013-11-09 05:24:43

您需要创建一个线程并将您的数据流式传输到response。使用类似如下的内容:

在你的主线程中:

代码语言:javascript
复制
while (Listening)
{
    // wait for next incoming request
    var result = listener.BeginGetContext(ListenerCallback, listener);
    result.AsyncWaitHandle.WaitOne();
}

在你班上的某个地方:

代码语言:javascript
复制
public static void ListenerCallback(IAsyncResult result)
{
    var listenerClosure = (HttpListener)result.AsyncState;
    var contextClosure = listenerClosure.EndGetContext(result);

    // do not process request on the dispatcher thread, schedule it on ThreadPool
    // otherwise you will prevent other incoming requests from being dispatched
    ThreadPool.QueueUserWorkItem(
        ctx =>
        {
            var response = (HttpListenerResponse)ctx;

            using (var stream = ... )
            {
                stream.CopyTo(response.ResponseStream);
            }

            response.Close();
        }, contextClosure.Response);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18011788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档