2012-10-11 59 views
2

您使用QTcpSocket通过网络发送数据,将readyRead信号与您的数据处理程序连接起来。但readyRead信号可能未被触发。无法接收QTcpSocket的readyRead信号?

您可以看到Wireshark到达的数据,但QTcpSocket不会触发readyRead信号。

+0

正常情况下,应该触发readyRead信号。检查你的接收端。 –

+0

确保connect()中没有拼写错误...使用Qt Creator自动完成SIGNAL和SLOT,和/或查看控制台是否存在关于连接失败的警告和/或检查connect()返回值。还要确保你的事件循环运行正常(你没有调用阻塞方法)。 – hyde

+0

我有相同或相似的问题。 Win7 x64,Qt 5.1。 Wireshark显示消息到达,但每4-10个消息中只有一个会触发readyRead()。它让我难倒了。 – MayaPosch

回答

-1

如果您的线程创建的套接字位于模式对话框中,则会发生这种情况,该对话框会进入自己的事件循环,从而阻止readyRead信号触发。

我想出了两个解决方案:
1)使用非模态对话框,提供对话结果与信号。
2)在另一个线程内创建套接字。

+0

正常的模态对话框不会阻止事件处理,Qt负责处理。 – hyde