【发布时间】:2024-01-17 18:42:01
【问题描述】:
我通过 TCP 从服务器获取正弦波并绘制它。一切似乎都很好,直到我开始以 c>1000 发回一些东西。发送一个字节后,我仍然得到数据,但正弦波的波形发生了变化。我确定有一些丢失的数据,但我在我的代码中找不到错误。传输速率约为 1M bps。
问题是
当我向服务器写入内容时,它对套接字有何影响?
为什么套接字会丢失一些数据?
-
我该如何解决?
ssTcpClient::ssTcpClient(QObject *parent) : QObject(parent) { socket = new QTcpSocket(this); connect(socket, SIGNAL(connected()), this, SLOT(on_connected())); connect(socket, SIGNAL(disconnected()), this, SLOT(on_disconnected())); } void ssTcpClient::on_connected() { qDebug() << "Client: Connection established."; connect(socket, SIGNAL(readyRead()), this, SLOT(on_readyRead())); in = new QDataStream(socket); } void ssTcpClient::on_readyRead(){ static quint32 c = 0; qDebug() << "c" << c++; QVector<quint8> data; quint8 buf; while(socket->bytesAvailable()>0){ //read data to buffer *in >> buf; data.append(buf); } //process data emit data_read(data); //if there are over 1000 data then send something back if(c>1000){ char msg[10]; msg[0] = 'c'; socket->write(msg,1); socket->flush(); } }
【问题讨论】:
标签: qt sockets tcp qtcpsocket