zoukankan      html  css  js  c++  java
  • 简单的异步HTTP服务端和客户端

     /// <summary>
            /// 异步Http服务器
            /// </summary>
            class AsyncHttpServer
            {
                readonly HttpListener _listener;
                //相应信息
                const string RESPONSE_TEMPLATE = "<html><head><title>Test</title></head><body><h2>Test page</h2><h4>Today is: {0}</h4></body></html>";
    
                public AsyncHttpServer(int portNumber)
                {
                    _listener = new HttpListener();
                    _listener.Prefixes.Add(string.Format("http://+:{0}/", portNumber));
                }
    
                public async Task Start()
                {
                    _listener.Start();
    
                    while (true)
                    {
                        var ctx = await _listener.GetContextAsync();
                        Console.WriteLine("Client connected...");
                        var response = string.Format(RESPONSE_TEMPLATE, DateTime.Now);
    
                        using (var sw = new StreamWriter(ctx.Response.OutputStream))
                        {
                            await sw.WriteAsync(response);
                            await sw.FlushAsync();
                        }
                    }
                }
    
                public async Task Stop()
                {
                    _listener.Abort();
                }
            }
    

      

           /// <summary>
            /// 客户端获取响应信息
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            static async Task GetResponseAsync(string url)
            {
                using (var client = new HttpClient())
                {
                    HttpResponseMessage responseMessage = await client.GetAsync(url);
                    string responseHeaders = responseMessage.Headers.ToString();
                    string response = await responseMessage.Content.ReadAsStringAsync();
    
                    Console.WriteLine("Response headers:");
                    Console.WriteLine(responseHeaders);
                    Console.WriteLine("Response body:");
                    Console.WriteLine(response);
                }
            }
    

    注: 以管理员身份运行程序

  • 相关阅读:
    String 方法
    异常处理
    数组长度改变方法
    对象
    重载(函数)
    函数
    java基础(死循环退出选项)
    cookie的封装,获取,删除
    事件监听的理解
    JS少数兼容
  • 原文地址:https://www.cnblogs.com/zhangzhi19861216/p/5261384.html
Copyright © 2011-2022 走看看