03-基于HttpListener的Web服务

using System;
using System.Net;


namespace _03_基于HttpListener的Web服务
{
    class SimpleSocketListener
    {
        public void Run()
        { 
        //检查系统是否支持
            if (!HttpListener.IsSupported)
            {
                throw new System.InvalidOperationException("使用 HttpListener 必须为 Windows XP SP2 或 Server 2003 以上系统!");
            }
            //注意前缀必须以 /正斜杠结尾
            string[] prefixes = new string[] { "http://localhost:49152/" };
            //创建监听器
            HttpListener listenter = new HttpListener();
            //增加监听前缀。
            foreach (string  item in prefixes)
            {
                listenter.Prefixes.Add(item);
            }
            //开始监听
            listenter.Start();
            Console.WriteLine("监听中...");
            while (true)
            { 
            //注意GetContent 方法将阻塞线程,直到请求到达
                HttpListenerContext context = listenter.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;
            }
            // 关闭服务器
            listenter.Stop();


        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值