C++ QTcpSocket-尝试发送大量请求

C++ QTcpSocket-尝试发送大量请求,c++,qt,C++,Qt,我试图发送2个请求一个接一个在同一时间。我的代码如下(这是示例代码): 问题如下。服务器只接收第一个请求。没有第二个请求。我使用wireshark进行了嗅探,发现tcp数据包中没有第二个请求 我必须如何通过QTcpSocket逐个发送多个请求 UPD:我插入了qDebug()字节可用()写入(块)在客户端中。此外,我还向客户端添加了以下内容: connect(this, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWritten(qint64)))

我试图发送2个请求一个接一个在同一时间。我的代码如下(这是示例代码):

问题如下。服务器只接收第一个请求。没有第二个请求。我使用wireshark进行了嗅探,发现tcp数据包中没有第二个请求

我必须如何通过QTcpSocket逐个发送多个请求

UPD:我插入了
qDebug()字节可用()写入(块)在客户端中。此外,我还向客户端添加了以下内容:

connect(this, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWritten(qint64)));

void Connection::bytesWritten(qint64 count)
{
    qDebug() << count << "bytes written";
}
服务器:

68 bytes 
ORDER_STATUS_GET_LIST received

我自己找到了解决办法。我想有人也需要这个

解决方案很简单:

QTcpSocket client;
...
client->write(block); 
client->flush();
client->write(block);
client->flush();

我们需要先将qt套接字缓冲区刷新到网络,然后再使用另一个数据填充它。

根据文档,如果在多次写入之间不返回事件循环,则需要
刷新()

正确的解决方案是将块缓冲到例如
QByteArray
中,并立即发送缓冲区

QTcpSocket client;
QByteArray buffer;
...
buffer << block;
buffer << block;
client->write(buffer);
qtcsocket客户端;
QByteArray缓冲区;
...

缓冲区您可以检查输出QTcpSocket::write吗?它应该返回已写入的字节数。您能否在服务器端显示连接到
readyRead()
信号的插槽的代码。
QTcpSocket client;
...
client->write(block); 
client->flush();
client->write(block);
client->flush();
QTcpSocket client;
QByteArray buffer;
...
buffer << block;
buffer << block;
client->write(buffer);