gpt4 book ai didi

c++ - QTcpSocket - 尝试发送一堆请求

转载 作者:行者123 更新时间:2023-11-28 03:39:33 26 4
gpt4 key购买 nike

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

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

问题如下。服务器仅接收第一个请求。没有第二个请求。我用wireshark嗅探了一下,发现tcp包里没有第二个请求。

要通过 QTcpSocket 一个一个地发送多个请求,我必须怎么做?

UPD:我插入了 qDebug() << this->bytesAvailable() << "bytes";在 readyRead() 和 qDebug() << this->bytesToWrite(); 中发送到服务器在每个 client->write(block); 之后在客户端。另外,我将此添加到客户端:

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

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

我在第一个请求中发送 ORDER_STATUS_GET_LIST 常量,在第二个请求中发送 ORDER_GET_LIST。我在服务器中添加了数据输出。我收到了第一个命令。

有输出 list :

客户:

Sending ORDER_STATUS_GET_LIST 
11 bytes to write
Sending ORDER_GET_LIST
68 bytes to write
68 bytes written

服务器:

68 bytes 
ORDER_STATUS_GET_LIST received

最佳答案

根据文档,如果您不返回到多次写入之间的事件循环,则需要flush() 套接字。

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

QTcpSocket client;
QByteArray buffer;
...
buffer << block;
buffer << block;
client->write(buffer);

关于c++ - QTcpSocket - 尝试发送一堆请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9726376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com