基于QT的多线程socket通信

我从上周开始就在找qt的多线程网络通信,结果网上都是啥,有的就是纯理论,有的就是很简单的一对一,最好的就是我找到的伪多线程通信,为什么说它是接近的呢,因为它的开socket是多线程的,但是收发是单线程的,也就是说服务端只能收,客户端只能发,我在此基础上改造了一下,变成了也能同时收发的,我感觉这个例子就比较全了。

我用https://github.com/licongxing/WinIPC_Socket_Tcp这个例子作为基础来改的,因为这个多线程demo应该是最好的了我感觉。

 

结构讲解:

1、这个原来代码是通过开socket的多线程来与多个客户端来进行连接。注意他的信号与槽。

第一个信号与槽是接受从mSocketThread线程传下来的值,后面的[=]是qt 的第五类重载,也就是说,接收到isMsg()传出来的值,就在listview上面显示出来

第二个是界面往线程传值,他的Wight的isSend信号是绑定在按键槽上的,当按下发送按键,emit出去这个信号,在mSocketThread上面的dealMsg函数去接收,

2、它的这个socket函数是与对应的客户端进行通信,然后又开了一个线程MsgThread去接收客户端发来的信息,而且这个MsgThread的里面是有回应的send函数,就相当于再发客户端进行一次响应,我把这块删除了,变得更加独立。

所以我自己有写了一个发送的函数,并且开了一个线程SendThread来进行发送,注意最后一个connect,最后面加了一个

Qt::DirectConnection

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值