QT程序socket的readyRead信号不触发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT程序socket的readyRead信号不触发相关的知识,希望对你有一定的参考价值。

我写了一个qt网络程序,在程序里有一个线程thread,thread的run中new了一个qtcpsocket。
代码很长,我大概意思一下:
run()

socket = new QTcpSocket();
connect(socket,SIGNAL(readyRead()),this,SLOT(onRead()));
while(1)

死循环



编译通过以后,运行时发现readyRead信号根本没有发出,但是用端口监听工具可以看到这个socket是有接收到数据的。
是否跟死循环有关?不改变线程的死循环结构的话,我应该怎样做才能让socket发出readyRead信号?

参考技术A 不要随便搞死循环,这是一个不好的习惯,还有你要先监听啊,才能连接这个函数,还有我这个项目刚做过,和你的定义差不多,你也是做后台的?追问

这是qtcpsocket不是qtcpserver,不需要listen的吧。
这个死循环是功能决定的,没办法。

追答

m_tcpSocket = m_tcpServer->nextPendingConnection(); //得到每个连进来的socket
自己看吧,

本回答被提问者采纳
参考技术B run()exec();

以上是关于QT程序socket的readyRead信号不触发的主要内容,如果未能解决你的问题,请参考以下文章

QTcpSocket readyRead() 信号多次发出

接收不到 QTcpSocket 的 readyRead 信号?

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

Qt的QTcpSocket ReadyRead信号的实现

Qt的Socket数据通讯的一个样例。

Qt串口通信接收数据不完整的解决方法(传输图片)