Csharp/C Sharp/Network/Web Server
Версия от 15:31, 26 мая 2010; (обсуждение)
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();
}
}
}