有人能为我指出正确的方向,以使Qt连接到运行Socket.io服务器的Node.JS吗?
我找到了将Qt作为服务器运行的示例,但没有一个回读数据。
最佳答案
在Qt中,至少有两种方法可以做到这一点。使用阻塞或非阻塞调用。如果使用非阻塞调用,则将信号“连接”到正在使用的TcpSocket类的插槽。当一些数据到达时,您将触发事件/回调。这不是一个完整的示例:
在您的.h文件中声明
#include <QtNetwork>
...
class MyClient : public QObject
{
std::unique_ptr<QTcpSocket> tcpSocket_;
...
public slots:
void readTcpData();
...
然后在您的.cpp文件中执行以下操作:
MyClient::MyClient()
{
tcpSocket_ = std::unique_ptr<QTcpSocket>(new QTcpSocket(this));
connect(tcpSocket_.get(), SIGNAL(readyRead()), this, SLOT(readTcpData()));
}
void MyClient::readTcpData()
{
QByteArray rawData = tcpSocket_->readAll();
QString textData(rawData);
... do something with the received data.
}
要写入数据,可以使用tcpSocket _-> write(...)。
因此,每当数据到达时,readReady()信号就会触发readTcpData()函数,并且您知道可以从套接字读取“某些”数据。
希望它能帮助您回答问题。祝好运!