第一次接触Client-Server,使用CSocket的问题
来源:互联网 发布:中文校对软件 编辑:程序博客网 时间:2024/06/15 09:38
第一次使用CSocket,遇到的问题不少。比如:
1. A客户端主动发送数据至服务器,且会一直进行。那么,服务端处理A时,就会影响到其他客户端的数据接收。则需要开一个线程来处理A发送的数据,就会出现问题:创建线程时该传递什么参数?如何传?
有试过,直接将Receive(&ndata,sizeof(ndata)-1); ndata数组直接传递过去,但是在线程那边不太好接收,因为线程时在socket重载类里创建的,引用类中的数组需要类指针传过去。
后来,查资料,选择使用SOCKET hSocket = this->Detach();
线程里
CPaneClient *pThis = new CPaneClient;pThis->Attach((SOCKET)lpParam);将套接字传过去。但这样,出现了第2个问题
2. OnReceive(int nErrorCode)函数中移除了改socket的hSocket ,则说明不能使用该socket。而服务器有需要给A传递一些数据。起初,很自然地把需要传递的数据,放到接收A数据的线程里,但是这样,A并不能接收到服务器发送的数据。 A与服务器该如何进行收发数据?
A客户端一直发送数据,但也需要接收服务器发送来的数据。在线程里,同时收发,好像不行。线程一直循环,判断
nLen = Receive(&ndata,sizeof(ndata)-1); if(nLen>0)>0则说明接收到数据,需要处理,会影响到发送。
后面选择A采用两个sokcet,一个Detach到线程里面进行循环发送,一个用于接收服务端的数据,显示至界面。当然,服务端需要区分好这两个socket,A用于发数据的socket服务端则用于收,反之亦然。
好在其他客户端与服务端的通信不多,仅在服务端发送指令后,发送对应的数据。不然,得考虑每个客户端建一个收发的线程。
期间,有发帖。在此附上链接,方便以后查阅。
Socket服务端接收数据的处理
阅读全文
0 0
- 第一次接触Client-Server,使用CSocket的问题
- 第一次接触XNA,关于LoadContent的问题
- 第一次接触Weblogic遇到的问题
- HM的使用(第一次接触HEVC)
- 第一次使用MySQL client连接到远程MySQL server时的常见报错及处理
- 与SQL Server 2005 的第一次亲密接触
- 基于CSOCKET的Client简单实例
- Blog的第一次接触
- 第一次的亲密接触!
- 第一次的亲密接触
- 线程的第一次接触
- 线程的第一次接触
- CodeIgniter的第一次接触
- 第一次接触的java
- 第一次接触的cocoaPods
- Eventbus的第一次接触
- J2EE初步,第一次接触的那些乱码问题
- 第一次亲密接触——关于LDAP的使用心得
- MySQL错误:Can't connect to MySQL server (10060)远程连接数据库失败
- log4j和log4j2的简单使用配置
- POJ3347 Kadj Squares(计算几何)
- vue练习,写游戏
- LLC逻辑链路控制子层
- 第一次接触Client-Server,使用CSocket的问题
- 机器学习中训练集、验证集(开发集)、测试集如何划分
- appuim安装使用介绍
- hibernate4与3使用annotation在配置文件中的区别
- Android7.0 popupWindow显示位置的问题
- Java的权限修饰符的区别和用法总结
- 从源码出发浅析Android TV的焦点移动原理-上篇
- 极乐技术周报(第二十四期)
- php mysql emoji 的存储