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,这时就回看到服务器返回的数据。

      

  • 相关阅读:
    java-数组
    编程练习
    java-循环语句
    java-条件语句if&switch
    JAVA-运算符
    JAVA-常量
    springAOP源码分析之篇一:配置文件的解析
    spring IOC容器的扩展
    spring IOC之篇六 bean的加载---bean的创建
    spring IOC之篇五 bean的加载--缓存中获取
  • 原文地址:https://www.cnblogs.com/wywnet/p/3377683.html
Copyright © 2011-2022 走看看