C#实现的HttpListener服务器怎么支持多线程下载
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#实现的HttpListener服务器怎么支持多线程下载相关的知识,希望对你有一定的参考价值。
现在安卓客户端已经写好,支持多线程下载。求一个服务器端多线程下载的代码。这一块的线程安全有点搞不懂,求指教。
参考技术A C# 实现HTTP协议迷你服务器的两种方法http://www.csharpwin.com/csharpspace/13462r5089.shtml
参考下上面的代码看看是否能解决你的问题。追问
服务器搭建很简单,你没看我的需求,我需要的是多线程下载。不过还是很谢谢
使用 C# HttpListener 时无法设置 MIME 类型
【中文标题】使用 C# HttpListener 时无法设置 MIME 类型【英文标题】:Can't set MIME types when using C# HttpListener 【发布时间】:2020-11-26 03:27:17 【问题描述】:我创建了一个 C# HttpListener()。
在请求处理程序中,我执行必要的操作,然后在响应对象上设置标头和 MIME 类型。但是,浏览器报告 MIME 类型始终为空。
private void HandleWebRequest(HttpListenerContext context)
string path = context.Request.Url.LocalPath.ToLowerInvariant();
HttpListenerResponse response = context.Response;
HttpListenerRequest request = context.Request;
try
// Respond to requests here. For ex:
byte[] displayImage = HtmlHelper.GetTextResource(path.Substring(20));
response.ContentLength64 = displayImage.Length;
response.OutputStream.Write(displayImage, 0, displayImage.Length);
finally
SetResponseHeaders(path, response);
response.Close();
private void SetResponseHeaders(path, response)
...
response.ContentType = MediaTypeNames.Text.Plain;
response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
response.AddHeader("Access-Control-Allow-Methods", "GET,POST");
response.AddHeader("Access-Control-Allow-Origin", "*");
【问题讨论】:
【参考方案1】:问题是我在设置 Response.Close(); 时在末尾添加了标头和 MIME 类型;
解决方法是在开头设置标题
private void HandleWebRequest(HttpListenerContext context)
string path = context.Request.Url.LocalPath.ToLowerInvariant();
HttpListenerResponse response = context.Response;
HttpListenerRequest request = context.Request;
// Set headers here
SetResponseHeaders(path, response);
try
// Respond to requests here. For ex:
byte[] displayImage = HtmlHelper.GetTextResource(path.Substring(20));
response.ContentLength64 = displayImage.Length;
response.OutputStream.Write(displayImage, 0, displayImage.Length);
finally
response.Close();
【讨论】:
以上是关于C#实现的HttpListener服务器怎么支持多线程下载的主要内容,如果未能解决你的问题,请参考以下文章