QTcpSocket的readyRead()信号失灵的问题

注意QtCreator调试的时候一定要点调试安按钮,别点成运行。

QTcpSocket的readyRead()信号失灵的问题

sunnyeternally2012-07-01 08:52:43

本小白最近在用Qt写Tcp/ip的通信,程序在linux的虚拟机上跑得挺溜的,但出于其他需求换了win7平台后,Qt Creator一直无法通过编译(jom异常退出,原因暂时不明),所以用了vs2010来写,不过这下又跑出问题来了,自定义的槽connect(tcpSocket, SIGNAL(readyRead()),this,SLOT(update_message()));死也不理我.....用超级终端和TcpIP助手都试过了,槽完全没有被触发。似乎也有人遇到和我一样的问题,不过还是没有找到最可靠的答案,请各位大侠不吝赐教啊!

735点赞收藏14

分享

 写回复

4 条回复

 切换为时间正序

当前发帖距今超过3年,不再开放新的回复

发表回复

kgobb235813 2013-12-24

请问waitForReadyRead()怎么加呢?加在哪?

sunnyeternally 2012-07-03

问题已经解决了,但还是多谢帮助,connect我之前已经设过断点来观察了,连接是成功的,后来加了一个waitForReadyRead()问题确实解决了,看起来是因为程序没有等数据传输完毕的原因,发送也是加了一个waitForByteWritten()就ok了,windows下和linux下似乎确实有一些不一样,linux下的数据不用等待就能触发信号,但确实还是加上一个wait函数更合理。

addfourliu 社区成员 2012-07-02

connect返回的是bool值,你可以打个断点调试一下:
bool b=connect(tcpSocket, SIGNAL(readyRead()),this,SLOT(update_message()));
如果b为真,说明信号槽没有问题,然而槽函数没有响应,说明tcpSocket根本没有接收到数据,这样的话,你要检查客户端是否发送数据了
如果b为假,说明信号槽没有建立成功。

还有一种情况,就是你的connect在线程中

sunnyeternally 2012-07-01

加了个waitForReadyRead();似乎就可以了.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三余丨无梦生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值