黑马程序员技术交流社区

标题: 关于多线程中套接字的问题 [打印本页]

作者: 黑马郭    时间: 2013-12-19 16:18
标题: 关于多线程中套接字的问题
本帖最后由 黑马郭 于 2013-12-25 20:28 编辑

请各位大虾们指点一下 不胜感激   ……
服务端接受客户端发送的消息,部分代码如下:
/// <summary>
        /// 负责监听客户端连接请求的方法
        /// </summary>
        public void WatchConnection()
        {
            while (true)//持续不断的监听客户端新的连接请求
            {

                Socket socketConnection = socketWatch.Accept();
                dic.Add(socketConnection.RemoteEndPoint.ToString(), socketConnection);
                lbKey.Items.Add(socketConnection.RemoteEndPoint.ToString());

                //创建线程 调用通信套接字的Receive方法  
                Thread thr = new Thread(ServeReceive);
                thr.IsBackground = false;
                thr.Start(socketConnection);//疑问
                dicthread.Add(socketConnection.RemoteEndPoint.ToString(), thr);

                ShowMsg("客户端连接成功!" + socketConnection.RemoteEndPoint.ToString());
            }
        }
/// <summary>
        /// 接收客户端发来的数据的方法
        /// </summary>
public void ServeReceive(object ServeSocketPara)//疑问
        {
          Socket ServeSocket = ServeSocketPara as Socket;
          while (true)//循环监听
           {
          byte[] arrMsgReceive = new byte[1024 * 1024 * 2];
          int length = ServeSocket.Receive(arrMsgReceive);
          string strMsgReceive = System.Text.Encoding.UTF8.GetString(arrMsgReceive, 0, length);
          ShowMsg(strMsgReceive);
            }
        }
疑问:第一个方法中的启动线程所传的套接字参数socketConnection和第二个方法中所传的参数ServeSocketPara是否一样,都是服务端监听到客户端所创建的套接字对象?







作者: 如远行客    时间: 2013-12-19 17:30
这两个套接字是同一个套接字,只是在客户端和服务端的名称不一样。在服务端,当监听方法检测到客户端发来的请求后,会自动的生成一个套接字,就是socketConnection,而客户端则通过ServeSocketPara这个套接字来和服务端通信。这实际上就是同一个连接,在这个连接上,可以往返发送和接收数据。
不过这是我一家之言,我的理解就是这样。
作者: 黑马郭    时间: 2013-12-20 09:28
如远行客 发表于 2013-12-19 17:30
这两个套接字是同一个套接字,只是在客户端和服务端的名称不一样。在服务端,当监听方法检测到客户端发来的 ...

谢谢回答 学习了……
作者: SunshineGirl    时间: 2013-12-25 13:56
当别的同学回答你的问题了,要及时设置成“提问结束”,这样才能得技术分。
作者: 黑马郭    时间: 2013-12-25 20:27
黑马蔡红微 发表于 2013-12-25 13:56
当别的同学回答你的问题了,要及时设置成“提问结束”,这样才能得技术分。 ...

ok   好的 谢谢提醒




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2