如何使用C 在socket.io中接收数据

How to receive data in socket.io using c++

本文关键字:数据 io socket 何使用      更新时间:2023-10-16

我使用c 中的socket.io有一个小项目,我需要使用node js从我的socket.io服务器接收数据,我正在使用socket.io使用qt中的c ,我在连接到socket.io服务器时有一个运行代码,但是我在qt socket.io接收器中没有接收数据。

我正在使用此代码接收数据。

//。h

  private:
  void OnNewMessage(std::string const& name,message::ptr const& data,bool hasAck,message::list &ack_resp);
  Ui::MainWindow *ui;

 std::unique_ptr<client> _io;

//。cpp

 MainWindow::MainWindow(QWidget *parent) :
 QMainWindow(parent),
 ui(new Ui::MainWindow),
_io(new client())
{
  ui->setupUi(this);
  using std::placeholders::_1;
  using std::placeholders::_2;
  using std::placeholders::_3;
  using std::placeholders::_4;
 _io->connect("http://127.0.0.1:8080");
 socket::ptr sock = _io->socket();
 sock->on("mapping",std::bind(&MainWindow::OnNewMessage,this,_1,_2,_3,_4));    
 }

 void MainWindow::OnNewMessage(const std::string &name, const message::ptr &data, bool hasAck, message::list &ack_resp)
{
 if(data->get_flag() == message::flag_object)
{
     std::string msg = data->get_map()["message"]->get_string();
  }
}

连接对应于Stream套接字(TCP(,而消息符号对应于Datagram套接字(UDP(。对于TCP,您应使用readall((:

void MainWindow::connectTcp()
{
    QByteArray data; // <-- fill with data
    _pSocket = new QTcpSocket( this ); // <-- needs to be a member variable: QTcpSocket * _pSocket;
    connect( _pSocket, SIGNAL(readyRead()), SLOT(readTcpData()) );
    _pSocket->connectToHost("127.0.0.1", 9000);
    if( _pSocket->waitForConnected() ) {
        _pSocket->write( data );
    }
}
void MainWindow::readTcpData()
{
    QByteArray data = pSocket->readAll();
}