C# 實現一個簡單的 HTTP 服務器

n342 9年前發布 | 2K 次閱讀 C#

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

}

</pre>

 本文由用戶 n342 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!