先上图,用图来描述整个服务器软件监听浏览器请求的过程。
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 } }