static void Main(string[] args)
{
WebServer.Start();
Console.Read();
}
public class WebServer
{
static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
public static void Start()
{
socket.Bind(new IPEndPoint(IPAddress.Any, 8002));
socket.Listen(100);
socket.BeginAccept(OnAccept, socket);
Console.WriteLine("当前web服务器启动成功,端口号为:8002");
}
public static void OnAccept(IAsyncResult async)
{
var serverSocket = async.AsyncState as Socket;
var clientSocket = serverSocket.EndAccept(async);
serverSocket.BeginAccept(OnAccept, serverSocket);
var bytes = new byte[10000];
var len = clientSocket.Receive(bytes);
var request = Encoding.UTF8.GetString(bytes, 0, len);
var response = string.Empty;
if (!string.IsNullOrEmpty(request) && !request.Contains("favicon.ico"))
{
var filePath = request.Split("\r\n")[0].Split(" ")[1].TrimStart('/');
response = System.IO.File.ReadAllText(filePath, Encoding.UTF8);
}
var responseHeader = string.Format(@"HTTP/1.1 200 OK
Date: Sun, 26 Aug 2018 03:33:36 GMT
Server: nginx
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Pragma: no-cache
Via: hngd_ax63.139
X-Via: 1.1 tjhtapp63.147:3800, 1.1 cbsshdf-A4-2-D-14.32:8101
Connection: keep-alive
Content-Length: {0}
", Encoding.UTF8.GetByteCount(response));
clientSocket.Send(Encoding.UTF8.GetBytes(responseHeader));
clientSocket.Send(Encoding.UTF8.GetBytes(response));
clientSocket.Close();
}
}
启动项目,访问:http://127.0.0.1:8002/1.html