有人能为我指出正确的方向,以使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()函数,并且您知道可以从套接字读取“某些”数据。
希望它能帮助您回答问题。祝好运!

09-05 14:24