当前位置:   article > 正文

C#实现HTTP服务器_c# http服务器

c# http服务器

.net框架下有一个简单但很强大的类HttpListener。这个类几行代码就能完成一个简单的服务器功能。虽然以下内容在实际运行中几乎毫无价值,但是也不失为理解HTTP请求过程的细节原理的好途径。

  1. <pre name="code" class="html">HttpListener httpListener = new HttpListener();
  2. httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
  3. httpListener.Prefixes.Add("http://localhost:8080/");
  4. httpListener.Start();
  5. new Thread(new ThreadStart(delegate
  6. {
  7. while (true)
  8. {
  9. HttpListenerContext httpListenerContext = httpListener.GetContext();
  10. httpListenerContext.Response.StatusCode = 200;
  11. using (StreamWriter writer = new StreamWriter(httpListenerContext.Response.OutputStream))
  12. {
  13. writer.WriteLine("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><title>测试服务器</title></head><body>");
  14. writer.WriteLine("<div style=\"height:20px;color:blue;text-align:center;\"><p> hello</p></div>");
  15. writer.WriteLine("<ul>");
  16. writer.WriteLine("</ul>");
  17. writer.WriteLine("</body></html>");
  18. }
  19. }
  20. })).Start();

 
 
HttpListener:使用HttpListener可创建响应 HTTP 请求的简单 HTTP 协议侦听器。实际上HttpListener只是实现了服务器端Socket上面的一个简单封装类。通过设置Prefixes属性来进行侦听,如,侦听器绑定到http或https端点的URL(如下代码).侦听器默认是绑定到运行在http的80端口和https的443的端口,并允许匿名和无身份验证的客户端访问。可以使用HttpListener类的属性Prefixes来制定自定义url和端口,并通过设置属性AuthenticationSchemes属性来配置身份验证。 


 建立HttpListener后,执行Start(执行是Start实际上是引发底层的Bind和Listener),就开始处理客服端输入请求。HttpListener中GetContext和套接字的Accept类似,它在没有请求准备好处理的时候处于被阻塞状态。GetContext返回一个对象HttpListenerContext。HttpListenerContext对象的属性Request属性提供了许多关于客户机的一些请求信息.Response则返回一个HttpListerResponse对象,该对象可以用来响应客户机的请求。

AuthenticationSchemes枚举类有以下值:

  Anonymous:默认值,允许任意的客户机进行连接,不需要身份验证。

  Basic:要求提供纯文本(64位编码)用户名和密码来进行验证。

  Digest:类似与基本身份验证,但是用户名和密码使用一个简单密码散列进行传输。

  Ntlm: 指定 NTLM 身份验证(只有IE支持)。

  IntegratedWindowsAuthentication:指定Windows身份验证。

  Negotiate: 和客户端协商以确定身份验证方案。如果客户端和服务器均支持 Kerberos,则使用 Kerberos;否则使用 Ntlm

  None:不进行身份验证。

2. GET方法

  1. publicstaticstring GetUrltoHtml(string Url,string type)
  2. {
  3. try
  4. {
  5. System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
  6. // Get the response instance.
  7. System.Net.WebResponse wResp = wReq.GetResponse();
  8. System.IO.Stream respStream = wResp.GetResponseStream();
  9. // Dim reader As StreamReader = New StreamReader(respStream)
  10. using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, Encoding.GetEncoding(type)))
  11. {
  12. return reader.ReadToEnd();
  13. }
  14. }
  15. catch (System.Exception ex)
  16. {
  17. //errorMsg = ex.Message;
  18. }
  19. return"";
  20. }
3.异步

  1. //HttpListener 只支援win2003及xp哦~   
  2. public class HttpServer  
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/252137
推荐阅读
相关标签
  

闽ICP备14008679号