可以创建SocketPair的跨平台Soket基础源码以及方便的线程操作源码
在看使用libevent的时候,它里面有一个创建socketpair对的函数
先分析一下什么是SocketPair.
首先搞明白,在我们平时单个客户端和服务端TCP通信的时候,需要三个socket才能做到能够全双工通信,什么?三个,是的没错!
一个客户端client ,一个服务端server, 一个accepter; 一开始client 连接server,server在接受client连接的时候,产生一个accepter,专门负责与client通信. 好了,我们SocketPair就到此完了,我们只需要把client ,accepter 保存起来,server关闭掉,就完成socketpair对创建.
client,accept是啥?其实就是两个数字,在同一机器上,有了这两个数字就可以在任何的进程,线程相互的收发消息,想想都很爽!因为在不同线程,进程收发消息是不需要加锁,随便弄!(消息粘包自己处理好就行),类似于QT里面信号槽机制,消息我发了,至于谁收,做什么处理,我不管,是不是很好的解耦合!
至于性能上,我做过音视频解码到播放使用这个方案处理线程通信都没问题.更多的就
软件架构
安装教程
测试工程为VS2019创建,Tcp和线程相关的代码是跨平台的,测试使用比较简单,相关代码项目已在使用,linux测试工程没创建,
使用说明
VS2019 打开方案就可编译,或是直接拿 XTcp XThread源码调用就可
创建socket对函数为静态函数,直接创建一对socket
XTcp tcp[2];
XTcp::CreatePariSocket(tcp);