• 记录点滴(一)


                System.Uri ms = new Uri("http://www.microsoft.com/en/us/default.aspx");
                Console.WriteLine("Scheme: {0}", ms.Scheme);
                Console.WriteLine("Host: {0}", ms.Host);
                Console.WriteLine("Port: {0}", ms.Port);
                Console.WriteLine("AbsolutePath: {0}", ms.AbsolutePath);
                Console.WriteLine("Query: {0}", ms.Query);
                Console.ReadKey();
           public void Run()
           {
               // 取得本机的 loopback 网络地址,即 127.0.0.1
               IPAddress address = IPAddress.Loopback;
               // 创建可以访问的端点,49152 表示端口号
               IPEndPoint endPoint = new IPEndPoint(address, 49152);
               // 创建一个 socket,使用 IPv4 地址,传输控制协议 TCP,双向、可靠、基于连接的字节流
               Socket socket = new Socket(
                   AddressFamily.InterNetwork,
                   SocketType.Stream,
                   ProtocolType.Tcp);
               // 将 socket 绑定到一个端点上
               socket.Bind(endPoint);
               // 设置连接队列的长度
               socket.Listen(10);
               Console.WriteLine("开始监听, 端口号:{0}.", endPoint.Port);
               while (true)
               {
                   // 开始监听,这个方法会阻塞线程的执行,直到接受到一个客户端的连接请求
                   Socket client = socket.Accept();
                   // 输出客户端的地址
                   Console.WriteLine(client.RemoteEndPoint);
                   // 准备读取客户端请求的数据,读取的数据将保存在一个数组中
                   byte[] buffer = new byte[4096];
                   // 接受数据
                   int length = client.Receive(buffer, 4096, SocketFlags.None);
                   // 将请求的数据翻译为 UTF-8
                   System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
                   string requestString = utf8.GetString(buffer, 0, length);
                   // 显示请求的内容
                   Console.WriteLine(requestString);
                   // 状态行
                   string statusLine = "HTTP/1.1 200 OK\r\n";
                   byte[] statusLineBytes = utf8.GetBytes(statusLine);
                   // 准备发送到客户端的网页
                   string responseBody 
                       = @"<html>
                               <head><title>From Socket Server</title></head>
                               <body><h1>Hello, world.</h1></body>
                           </html>";
                   byte[] responseBodyBytes = utf8.GetBytes(responseBody);
                   // 回应的头部
                   string responseHeader =
                       string.Format(
                           "Content-Type: text/html; charset=UTF-8\r\nContent-Length: {0}\r\n",
                           responseBody.Length
                           );
                   byte[] responseHeaderBytes = utf8.GetBytes(responseHeader);
    
                   // 向客户端发送状态信息
                   client.Send(statusLineBytes);
                   // 向客户端发送回应头
                   client.Send(responseHeaderBytes);
                   // 头部与内容的分隔行
                   client.Send(new byte[] { 13, 10 });
                   // 向客户端发送内容部分
                   client.Send(responseBodyBytes);
    
                   // 断开与客户端的连接
                   client.Close();
                   if (Console.KeyAvailable)
                       break;
               }
               // 关闭服务器
               socket.Close();
           }
            public void Run()
            {
                // 取得本机的 loopback 网络地址,即 127.0.0.1
                IPAddress address = IPAddress.Loopback;
                // 创建可以访问的端点,49152 表示端口号
                IPEndPoint endPoint = new IPEndPoint(address, 49152);
                // 创建 TCP 监听器
                TcpListener newserver = new TcpListener(endPoint);
                // 启动监听器
                newserver.Start();
                Console.WriteLine("开始监听...");
                while (true)
                {
                    // 等待客户端连接
                    TcpClient newclient = newserver.AcceptTcpClient();
                    Console.WriteLine("已经建立连接!");
                    // 得到一个网络流
                    NetworkStream ns = newclient.GetStream();
                    // 处理过程中使用 UTF-8 编码
                    System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
                    byte[] request = new byte[4096];
                    int length = ns.Read(request, 0, 4096);
                    string requestString = utf8.GetString(request, 0, length);
                    Console.WriteLine(requestString);
    
                    // 状态行
                    string statusLine = "HTTP/1.1 200 OK\r\n";
                    byte[] statusLineBytes = utf8.GetBytes(statusLine);
                    // 准备发送到客户端的网页
                    string responseBody 
                        = @"<html>
                                <head><title>From TcpListener Server</title></head>
                                <body><h1>Hello, world.</h1></body>
                            </html>";
                    byte[] responseBodyBytes = utf8.GetBytes(responseBody);
                    // 回应的头部
                    string responseHeader =
                        string.Format(
                            "Content-Type: text/html; charset=UTF-8\r\nContent-Length: {0}\r\n",
                            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();
            }
         public void Run()
         {
             // 检查系统是否支持
             if (!HttpListener.IsSupported)
             {
                 throw new System.InvalidOperationException(
                     "使用 HttpListener 必须为 Windows XP SP2 或 Server 2003 以上系统!");
             }
             // 注意前缀必须以 / 正斜杠结尾
             string[] prefixes = new string[] { "http://localhost:49152/" };
             // 创建监听器.
             HttpListener listener = new HttpListener();
             // 增加监听的前缀.
             foreach (string s in prefixes)
             {
                 listener.Prefixes.Add(s);
             }
             // 开始监听
             listener.Start();
             Console.WriteLine("监听中...");
             while (true)
             {
                 // 注意: GetContext 方法将阻塞线程,直到请求到达
                 HttpListenerContext context = listener.GetContext();
                 // 取得请求对象
                 HttpListenerRequest request = context.Request;
                 Console.WriteLine("{0} {1} HTTP/1.1", request.HttpMethod, request.RawUrl);
                 Console.WriteLine("Accept: {0}", string.Join(",", request.AcceptTypes));
                 Console.WriteLine("Accept-Language: {0}",
                     string.Join(",", request.UserLanguages));
                 Console.WriteLine("User-Agent: {0}", request.UserAgent);
                 Console.WriteLine("Accept-Encoding: {0}", request.Headers["Accept-Encoding"]);
                 Console.WriteLine("Connection: {0}",
                     request.KeepAlive ? "Keep-Alive" : "close");
                 Console.WriteLine("Host: {0}", request.UserHostName);
                 Console.WriteLine("Pragma: {0}", request.Headers["Pragma"]);
                 // 取得回应对象
                 HttpListenerResponse response = context.Response;
                 // 构造回应内容
                 string responseString
                     = @"<html>
                 <head><title>From HttpListener Server</title></head>
                 <body><h1>Hello, world.</h1></body>
             </html>";
                 // 设置回应头部内容,长度,编码
                 response.ContentLength64
                     = System.Text.Encoding.UTF8.GetByteCount(responseString);
                 response.ContentType = "text/html; charset=UTF-8";
                 // 输出回应内容
                 System.IO.Stream output = response.OutputStream;
                 System.IO.StreamWriter writer = new System.IO.StreamWriter(output);
                 writer.Write(responseString);
                 // 必须关闭输出流
                 writer.Close();
    
                 if (Console.KeyAvailable)
                     break;
             }
             // 关闭服务器
             listener.Stop();
    
         }
  • 相关阅读:
    校验输入框输入两位小数
    限制输入框只能输入整数
    npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
    yum -y wget
    docker 安装mysql
    centos 安装docker
    VirtualBox安装CentOS系统
    Spring Cloud服务保护
    从零开始搭建系统2.8——HDFS安装及配置
    从零开始搭建系统4.3——详细设计
  • 原文地址:https://www.cnblogs.com/chenqingwei/p/1977685.html
Copyright © 2020-2023  润新知