Qt TCP 套接字读取问题

Qt TCP Socket reading issue

我尝试使用 Qt 库和 GUI 程序读取 TCP 端口。

问题是当我使用这段代码读取套接字时:

QTcpSocket *a = new QTcpSocket();
a->connectToHost("127.0.0.1", 5000);
a->read(data,LEN);

它不起作用,我需要添加一个额外的功能:

a->waitForReadyRead(1)

但是这个函数减慢了我的程序,我连续使用 pthread 到 运行 这个代码。我有一个问题,我怎样才能加快我的程序并成功读取数据?

您需要使用 Qt 事件循环并连接 'data available' 事件信号才能异步读取套接字数据。您的连接语法可能如下所示:

QObject::connect(s, &QTcpSocket::readyRead, yourReaderFunction);

您的程序循环应包含对事件处理函数的调用 QApplication::processEvents(),或者您可以使用内置循环 QApplication::exec()

信号和槽机制是Qt的核心特性,您需要理解并正确使用它才能与Qt的大部分交互类:

Signal and slot basics

Qt5 new signal and slot syntax