C#web服务器

本文来自:http://www.cnblogs.com/anmoon/archive/2010/08/22/1805670.html

using System;

using System.Collections.Generic;

using System.Text;

using System.Net;

using System.Net.Sockets;

using System.IO;

namespace ConsoleHttpEchoServer

{

class Program

{

static void Main(string[] args)

{

using (HttpListener listerner = new HttpListener())

{

listerner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;//指定身份验证 Anonymous匿名访问

listerner.Prefixes.Add("http://127.0.0.1:8080/websulong/");//测试url:http://127.0.0.1:8080/websulong//?name=test

// listerner.Prefixes.Add("http://localhost/web/");

listerner.Start();

/*

* “System.Net.HttpListenerException”类型的未经处理的异常在 System.dll 中发生

* 其他信息: 另一个程序正在使用此文件,进程无法访问。

* 解决办法:换个端口号比如12782

*/

Console.WriteLine("WebServer Start Successed.......");

while (true)

{

//等待请求连接

//没有请求则GetContext处于阻塞状态

HttpListenerContext ctx = listerner.GetContext();

ctx.Response.StatusCode = 200;//设置返回给客服端http状态代码

string name = ctx.Request.QueryString["name"];

if (name != null)

{

Console.WriteLine(name);

}

//使用Writer输出http响应代码

using (StreamWriter writer = new StreamWriter(ctx.Response.OutputStream))

{

Console.WriteLine("hello");

writer.WriteLine("<html><head><title>The WebServer Test</title></head><body>");

writer.WriteLine("<div height:20px;color:blue;text-align:center;\"><p> hello {0}</p></div>", name);

writer.WriteLine("<ul>");

foreach (string header in ctx.Request.Headers.Keys)

{

writer.WriteLine("<li><b>{0}:</b>{1}</li>", header, ctx.Request.Headers[header]);

}

writer.WriteLine("</ul>");

writer.WriteLine("</body></html>");

writer.Close();

ctx.Response.Close();

}

}

listerner.Stop();

}

}

}

}