Qt TCP Socket读取问题

时间:2015-02-26 10:36:38

标签: c++ qt tcp qtcpsocket

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

问题在于,当我使用此代码读取套接字时:

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

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

a->waitForReadyRead(1)

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

1 个答案:

答案 0 :(得分:0)

您需要使用Qt事件循环并连接可用的数据'事件信号,以便异步读取套接字数据。您的案例中的连接语法可能如下所示:

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

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

信号和插槽机制是Qt的核心功能,您需要正确理解和使用它才能与大多数Qt类进行交互:

Signal and slot basics

Qt5 new signal and slot syntax