我尝试使用Qt库和GUI程序读取TCP端口。
问题在于,当我使用此代码读取套接字时:
QTcpSocket *a = new QTcpSocket();
a->connectToHost("127.0.0.1", 5000);
a->read(data,LEN);
它不起作用,我需要增加一个额外的功能:
a->waitForReadyRead(1)
但是这个函数会减慢我的程序,我使用pthread
来连续运行此代码。我有一个问题,我怎样才能加快我的程序速度并成功读取数据?
答案 0 :(得分:0)
您需要使用Qt事件循环并连接可用的数据'事件信号,以便异步读取套接字数据。您的案例中的连接语法可能如下所示:
QObject::connect(s, &QTcpSocket::readyRead, yourReaderFunction);
您的程序循环应该包含对事件处理函数QApplication::processEvents()
的调用,或者您可以使用内置循环QApplication::exec()
。
信号和插槽机制是Qt的核心功能,您需要正确理解和使用它才能与大多数Qt类进行交互: