C# 实现一个简单的 HTTP 服务器

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
 
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Threading;
  
class MainClass {
    private static int maxRequestHandlers = 5;
    private static int requestHandlerID = 0;
    private static HttpListener listener;
    private static void RequestHandler(IAsyncResult result) {
        try {
            HttpListenerContext context = listener.EndGetContext(result);
            StreamWriter sw = new StreamWriter(context.Response.OutputStream, Encoding.UTF8);
            sw.WriteLine("<html><head><title>C# </title>");
            sw.WriteLine("</head><body>" + result.AsyncState);
            sw.WriteLine("</body></html>");
            sw.Flush();
  
            context.Response.ContentType = "text/html";
            context.Response.ContentEncoding = Encoding.UTF8;
  
            context.Response.Close();
        } catch (ObjectDisposedException) {
            Console.WriteLine(result.AsyncState);
        } finally {
            if (listener.IsListening) {
                listener.BeginGetContext(RequestHandler, 
                    "RequestHandler_" + Interlocked.Increment(ref requestHandlerID));
            }
        }
    }
  
    public static void Main(string[] args) {
        using (listener = new HttpListener()) {
            listener.Prefixes.Add("http://localhost:8080/");
            listener.Start();
            for (int count = 0; count < maxRequestHandlers; count++) {
                listener.BeginGetContext(RequestHandler, "RequestHandler_" +
                    Interlocked.Increment(ref requestHandlerID));
            }
            Console.WriteLine("Press Enter to stop the HTTP Server");
            Console.ReadLine();
            listener.Stop();
  
            listener.Abort();
        }
    }
}
 

标签: isp

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:php在指定字符串中查找子字符串

下一篇:Java代码生成图片验证码实现