大多数 TCP 客户端都是异步操作的。发送数据后,只能在回调中进行处理。一些特殊的服务可能需要发送后同步返回。
有些模块或者支持库也有同步返回,但是只支持单线程单包返回。我经常看到有人问这方面的问题。
于是吃完粽子,我就利用空闲时间消化了一下,写了一个多线程TCP,同步发送数据和接收。
实现思路:
1:发送数据前获取唯一标识符,创建事件,将事件ID和唯一标识符保存在数组中
2:将唯一标识写入数据并发送给服务器,然后调用事件等待
3:服务器收到数据后,处理相关命令ID,并将客户端发送的唯一标识符添加到发回给客户端的数据中。
4:客户端接收到数据后,取出唯一标识,然后通过数组中的唯一标识取出事件ID,然后将数据放入数组中,触发事件ID,由客户端发送通知线。
5:发送线程收到事件触发后,根据唯一标识从数组中取出服务器返回的数据,然后释放事件ID并删除相关缓存数据。
这样就完成了发送数据后的同步接收过程。
TCP 套件使用客户端/服务器组件
09370735718[下载].rar
|