A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马郭 中级黑马   /  2013-12-19 16:18  /  1446 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马郭 于 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是否一样,都是服务端监听到客户端所创建的套接字对象?






评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

5 个回复

倒序浏览
这两个套接字是同一个套接字,只是在客户端和服务端的名称不一样。在服务端,当监听方法检测到客户端发来的请求后,会自动的生成一个套接字,就是socketConnection,而客户端则通过ServeSocketPara这个套接字来和服务端通信。这实际上就是同一个连接,在这个连接上,可以往返发送和接收数据。
不过这是我一家之言,我的理解就是这样。

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
如远行客 发表于 2013-12-19 17:30
这两个套接字是同一个套接字,只是在客户端和服务端的名称不一样。在服务端,当监听方法检测到客户端发来的 ...

谢谢回答 学习了……
回复 使用道具 举报
当别的同学回答你的问题了,要及时设置成“提问结束”,这样才能得技术分。
回复 使用道具 举报
黑马蔡红微 发表于 2013-12-25 13:56
当别的同学回答你的问题了,要及时设置成“提问结束”,这样才能得技术分。 ...

ok   好的 谢谢提醒
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马