Для создания простого Web-сервера необходимо использовать сокеты, реализующие протокол управления передачей (TCP).
Для ознакомления с принципами программирования сокетов можно просмотреть следующий материал.
Чтобы создать простой Web-сервер с помощью C#, создайте новый консольный проект (Console Application) и в файл Program.cs (т.е. в окно кода) введите слеующий программный код.
using System; using System.Net.Sockets; using System.Net; using System.Text; namespace SimpleServer { class SimpleWebServer { private Socket server; public SimpleWebServer(int port) { server = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); server.Bind(new IPEndPoint(IPAddress.Loopback, port)); } public void run() { server.Listen(10); Console.WriteLine("Сервер в ожидании запроса..."); for (; ; ) { Socket socket = server.Accept(); HandleClientSession(socket); } } private String SocketRead(Socket socket) { StringBuilder result = new StringBuilder(); byte[] buffer = new byte[1]; while (socket.Receive(buffer) > 0) { char ch = (char)buffer[0]; if (ch == '\n') break; if (ch!='\r') result.Append(ch); } return result.ToString(); } private void SocketWrite(Socket socket, String str) { //Если не требуется русско-язычная кодировка //System.Text.ASCIIEncoding encoding = // new ASCIIEncoding(); //Если требуется русско-язычная кодировка Encoding encoding = Encoding.GetEncoding(1251); socket.Send(encoding.GetBytes(str)); socket.Send(encoding.GetBytes("\r\n")); } private void HandleClientSession(Socket socket) { Console.WriteLine("**New Request**"); String first = SocketRead(socket); Console.WriteLine(first); String line; do { line = SocketRead(socket); if (line != null) Console.WriteLine(line); } while (line != null && line.Length > 0); SocketWrite(socket, "HTTP/1.1 200 OK"); SocketWrite(socket, ""); SocketWrite(socket, ""); SocketWrite(socket, "Simple Web Server "); SocketWrite(socket, ""); SocketWrite(socket, "<h1>Hello!</h1>"); SocketWrite(socket, "<h1>Привет!</h1>"); SocketWrite(socket, " "); SocketWrite(socket, ""); socket.Close(); } static void Main(string[] args) { SimpleWebServer webServer = new SimpleWebServer(8081); webServer.run(); } } }
Чтобы запустить Web-сервер, нажмите клавишу F5. Если программа записана без ошибок, появится консольное окно с сообщением "Сервер в ожидании запроса...". Не закрывайте это окно, пока не установите с ним соединение, используя браузер.
Чтобы установить соединение с Web-сервером и проверить его работоспособность, откройте окно браузера и в адресной строке введите следующий адрес localhost:8081. В результате в окне браузера должно появиться следующее сообщение
В окне командной строки, отображающем работу сервера, должна появиться информация следующего вида.