Csharp/C Sharp/Network/Web Server

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Web server

<source lang="csharp"> 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();
       }
   }

}

      </source>