跟传智播客学写web服务器软件(1)——开始监听浏览器请求并生成通信套接字

  先上图,用图来描述整个服务器软件监听浏览器请求的过程。

 

 1.服务器需要创建一个监听套接字(套接字:相当于一部电话),用于监听浏览器发送过来的请求。

 2.然后服务器需要请一个线程来帮忙,让它来负责这个套接字的Accept方法。

 以下的代码,就是做的上述的两个步骤:

  public Form1()
        {
            InitializeComponent();
            // .net 原则上禁止跨线程访问控件,这句话解决跨线程访问的问题
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        //监听套接字
        Socket sokListen = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
        //监听线程
        Thread thrListen;

        private void btnStart_Click(object sender, EventArgs e)
        {
            //1.绑定IP端口--------------------------------------------------------
            //1.1创建IP对象
            IPAddress address = IPAddress.Parse(txtIP.Text.Trim());
            //1.2创建包含端口的网路节点对象
            IPEndPoint endpoint = new IPEndPoint(address,int.Parse(txtPort.Text.Trim()));
            //绑定到套接字
            sokListen.Bind(endpoint);
            //2.设置监听队列-------------------------------------------------------
            //  设置为监听状态
            sokListen.Listen(10);
            //3.创建线程
            thrListen = new Thread(StartListen);
            thrListen.IsBackground = true;
            thrListen.Start();
              

        }

        #region 1.0开启线程监听 - void StartListen()
        /// <summary>
        /// 开启线程监听
        /// </summary>
        void StartListen()
        {
            while (true)
            {
                //接收浏览器的连接请求,并产生一个与之通信套接字
                Socket sokConn = sokListen.Accept();

            }
        } 
        #endregion

        #region 显示消息 -void ShowMsg(string strMsg)
        /// <summary>
        ///  显示消息
        /// </summary>
        /// <param name="strMsg"></param>
        public void ShowMsg(string strMsg)
        {
            txtContent.AppendText(strMsg + "\r\n");
        } 
        #endregion
    }
}

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。