Mega Code Archive

 
Categories / C# / Network
 

Web server

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