gpt4 book ai didi

c# - HttpListener 将数据写入响应输出流

转载 作者:行者123 更新时间:2023-11-30 17:04:01 26 4
gpt4 key购买 nike

我有一个基于 HttpListener 的小型本地 Web 服务器。服务器提供文件给本地客户端应用程序解包并写入文件到

response.OutputStream;

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

response.OutputStream = myFileStream;

但是 -ok- response.OutputStream 是只读的,所以我只能写入字节 - 有什么方法可以进行某种部分写入(流式传输)吗?

问候。

最佳答案

您将需要创建一个线程并将您的数据流式传输到响应。使用这样的东西:

在你的主线程中:

while (Listening)
{
// wait for next incoming request
var result = listener.BeginGetContext(ListenerCallback, listener);
result.AsyncWaitHandle.WaitOne();
}

在你类(class)的某个地方:

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);
}

关于c# - HttpListener 将数据写入响应输出流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18011788/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com