我使用HttpListener编写HTTP服务器,并希望使用零拷贝技术将文件发送给客户端。
是否有任何选项可以使用TransmitFile进行响应?
答案 0 :(得分:0)
我认为您指的是HttpResponse.TransmitFile
? HttpListener不会缓冲响应内容,因此您只需要直接写入输出流。
您可以使用这样的扩展方法来模仿ASP.NET行为:
public static void TransmitFile(this HttpListenerResponse response, string fileName)
{
using (var fileStream = File.OpenRead(filename))
{
response.ContentLength64 = fileStream.Length;
fileStream.CopyTo(response.OutputStream);
}
}