当前位置: 代码迷 >> QT开发 >> QTcpSocket 多线程编程有关问题
  详细解决方案

QTcpSocket 多线程编程有关问题

热度:177   发布时间:2016-04-25 04:43:55.0
QTcpSocket 多线程编程问题?
我简单描述一下自己的遇到的问题:
两个客户端A、B要通过服务器进行消息的传递和接收。(可以理解成服务器就是一个转发功能)

思路步骤:
1、A、B都连接到服务器,并且属于不同的线程,服务器的连接池中保存了两个连接
2、A通过线程A向服务器发送数据,服务器接收数据
3、服务器接收数据完毕,从连接池中找到B的连接
4、服务器通过B的连接,将消息发送给B

这样问题就出现啦:

疑问:A向服务器发送消息,和服务器接收消息,这些都在线程A中,但是我们找到B的连接后,通过连接向B传递消息的时候,这又在B的线程中,这种情况算什么?跨线程么?!这样是否可以实现消息的传递呢?

于是我照着我的思路进行编程,在第4步的时候(通过B的连接,将消息发送给B),在调试的时候显示了:QObject: Cannot create children for a parent that is in a different thread。但是奇怪的是,B仍然接收到服务器转发过来的消息了。然后,我通过B又向A发送消息,问题出现了,消息通过B发出去了,可是服务器根本接收不到(也可能是消息根本就没有通过B发出去)。。。

这个问题纠结了好久,求高手给点建议。。。

------解决方案--------------------
使用postEvent来进行跨线程的自定义事件投递!