zoukankan      html  css  js  c++  java
  • Web HTTP Service

        public class HttpWebService
        {
            #region /*private member*/
    
            /// <summary>
            /// 私有Http监听器
            /// </summary>
            private HttpListener m_Listerner;
    
            /// <summary>
            /// 私有线程
            /// </summary>
            private Thread m_Thread;
    
            /// <summary>
            /// 监听IP
            /// </summary>
            private string m_IP;
    
            /// <summary>
            /// 监听端口
            /// </summary>
            private int m_Port = 8620;
    
            #endregion
    
            #region /*constructor method*/
            /// <summary>
            /// 构造函数
            /// </summary>
            public HttpWebService()
            {
                Init();
            }
    
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="port">端口号</param>
            public HttpWebService(int port)
            {
                this.m_Port = port;
                Init();
            }
    
            #endregion
    
            #region /*public method*/
    
            /// <summary>
            /// 启动 HTTP Server
            /// </summary>
            public void Start()
            {
                Init();
                this.m_Thread.Start();
            }
    
            /// <summary>
            /// 停止 HTTP Server
            /// </summary>
            public void Stop()
            {
                if (m_Listerner != null)
                {
                    m_Listerner.Stop();
                }
                this.m_Thread = null;
            }
    
            #endregion
    
            #region /*private method*/
    
            /// <summary>
            /// 初始方法
            /// </summary>
            private void Init()
            {
                //取IP
                this.m_IP = IPHelper.GetLocalIP();
    
                m_Listerner = new HttpListener();
                //指定匿名身份验证
                m_Listerner.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
                //设置URI前缀
                m_Listerner.Prefixes.Add("http://" + m_IP + ":" + m_Port + "/api/");
                m_Listerner.Prefixes.Add("http://127.0.0.1:" + m_Port + "/api/");
                m_Listerner.Prefixes.Add("http://localhost:" + m_Port + "/api/");
    
                this.m_Thread = new Thread(new ThreadStart(myThreadMethod));
                this.m_Thread.IsBackground = true;
            }
    
    
            /// <summary>
            /// 线程方法
            /// </summary>
            private void myThreadMethod()
            {
                m_Listerner.Start();
                m_Listerner.BeginGetContext(new AsyncCallback(GetContextCallBack), m_Listerner);//开始异步检索请求
                Console.WriteLine("Http Server Start Successed.......");
    
            }
    
            /// <summary>
            /// 异步回调方法
            /// </summary>
            /// <param name="iar">异步操作状态</param>
            private void GetContextCallBack(IAsyncResult iar)
            {
                HttpListenerContext ctx = null;
                try
                {
                    m_Listerner = iar.AsyncState as HttpListener;
                    ctx = m_Listerner.EndGetContext(iar);
                    //请求处理
                    RequestProcesing.Working(ctx);
                    //开始异步检索请求
                    m_Listerner.BeginGetContext(new AsyncCallback(GetContextCallBack), m_Listerner);
    
                }
                catch (HttpListenerException e)
                {
                    Console.WriteLine("HttpListenerException: {0}", e);
                }
                finally
                {
                    ctx = null;
                }
    
            }
    
            #endregion
    
        }
    
  • 相关阅读:
    UML期末复习题——2.7:UML Sequence Diagram
    UML期末复习题——2.6:Package Diagram
    UML期末复习题——2.5:System Sequence Diagram & Post-condition
    UML期末复习题——2.4:Domain Model
    UML期末复习题——2.3:UML State Diagram
    UML期末复习题——2.2:UML Activity Diagram.
    UML期末复习题——2.1:Use Case Diagram
    UML期末复习题
    《C++之那些年踩过的坑(附录一)》
    《C++之那些年踩过的坑(三)》
  • 原文地址:https://www.cnblogs.com/skyblue/p/2395823.html
Copyright © 2011-2022 走看看