接收不到 QTcpSocket 的 readyRead 信号?

Posted

技术标签:

【中文标题】接收不到 QTcpSocket 的 readyRead 信号?【英文标题】:Cannot receive readyRead signal of QTcpSocket? 【发布时间】:2012-10-11 03:21:28 【问题描述】:

您使用 QTcpSocket 通过网络发送数据,将 readyRead 信号与您的数据处理程序连接。但是可能没有触发 readyRead 信号。

你可以看到 Wireshark 到达的数据,但是 QTcpSocket 没有触发 readyRead 信号。

【问题讨论】:

正常情况下应该触发readyRead信号。检查你的接收方。 我有相同或类似的问题。 Win7 x64,Qt 5.1。 Wireshark 显示消息到达,但每 4-10 条消息中只有一条会触发 readyRead()。这让我很难过。 【参考方案1】:

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

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

【讨论】:

普通的模态对话框不会阻塞事件处理,Qt 会处理。

以上是关于接收不到 QTcpSocket 的 readyRead 信号?的主要内容,如果未能解决你的问题,请参考以下文章

没有 QTcpSocket 接收

QTcpSocket类中的ReadyRead()信号没有被触发

为啥 QTcpSocket 接收到错误的数据?

QTcpSocket:解码接收到的数据

QTcpSocket 从服务器接收数据

QTcpSocket的连续发送数据和连续接收数据