zoukankan      html  css  js  c++  java
  • 【ASP.NET】编写自己的Web服务器

      自己写一个简单的Web服务器,对加深理解Http协议有很好的帮助,下面就看一下一个基于TcpListener的Web服务器:

    class Program
        {
            static void Main(string[] args)
            {
                IPAddress address = IPAddress.Loopback;
                IPEndPoint endPoint = new IPEndPoint(address, 49152);
    
                TcpListener newserver = new TcpListener(endPoint);
                newserver.Start();
                Console.WriteLine("开始监听......");
                
                while (true)
                {
                    TcpClient newclient = newserver.AcceptTcpClient();
                    Console.WriteLine("已经建立连接");
    
                    NetworkStream ns = newclient.GetStream();
    
                    System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
    
                    byte[] request=new byte[4096];
                    int lehgth = ns.Read(request, 0, 4096);
                    string requestString = utf8.GetString(request);
    
                    Console.WriteLine(requestString);
    
                    string statusLine = "HTTP/1.1 200 OK
    ";
                    byte[] statusLineBytes = utf8.GetBytes(statusLine);
    
                    string responseBody = "<html><head><body><h1>hello world</h1></body></head></html>";
    
                    byte[] responseBodyBytes = utf8.GetBytes(responseBody);
    
                    //回应头部分
                    string responseHeader = string.Format("Content-Type:text/html;charset=UTF-8
    Content-Length:{0}
    ",responseBody.Length);
    
                    byte[] responseHeaderBytes = utf8.GetBytes(responseHeader);
    
                    ns.Write(statusLineBytes, 0, statusLineBytes.Length);
                    ns.Write(responseHeaderBytes, 0, responseHeaderBytes.Length);
                    ns.Write(new byte[] { 13, 10 }, 0, 2);
                    ns.Write(responseBodyBytes, 0, responseBodyBytes.Length);
                    newclient.Close();
    
                    if (Console.KeyAvailable)
                        break;
                }
                newserver.Stop();
            }


    运行程序,然后打开浏览器,在浏览器窗口中输入服务器的地址:http://localhost:49152,这时就回看到服务器返回的数据。

      

  • 相关阅读:
    【转】给ExtJS的Grid增加两行tbar
    AWK使用手册
    SED单行脚本快速参考(Unix 流编辑器)
    Linux的用户和用户组管理
    Linux下中文man帮助安装。
    关于TLBB 客户端UI界面修改几个定义了解
    正则表达式30分钟入门教程
    VimDiff技巧
    CentOS 更换网易源
    Mysql数据库搭建Linux
  • 原文地址:https://www.cnblogs.com/wywnet/p/3377683.html
Copyright © 2011-2022 走看看