【发布时间】:2012-12-10 15:01:42
【问题描述】:
我有一些类来干扰 HTTP 服务器。 这是有意义的代码部分:
const QString someClass::BASEURL = QString("http://127.0.0.1:8000/?");
someClass::someClass():
manager(new QNetworkAccessManager(this))
{
}
QNetworkReply *someClass::run(QString request)
{
qDebug() << request;
QEventLoop loop;
QObject::connect(manager, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));
QNetworkReply *res = manager->get(QNetworkRequest(QUrl(BASEURL + request)));
loop.exec();
return res;
}
当我调用方法 run() 时,有时(不是每次)是两个相同的 GET 请求
(我用 tcpdump 查看)。 qDebug() 执行 1 次。
我的代码中有错误吗?我看不出任何可能的解释。
更新:
经过一些 tcpdump 输出研究。
在第二个请求之后,它发送带有 RST 标志的数据包作为对 FIN 的回答。
但我仍然看不出触发问题的 TCP 流没有区别。
F.e.这是wireshark的输出。 Stream 8 进展顺利。 Stream 11 与 Stream 12 重复。
我被这个困住了。也许是服务器大小的一些协议错误,我不确定。或者可能是 QNetworkAccessManager 中的一个错误。
【问题讨论】:
-
你能把 tcpdump 的输出贴出来吗?
-
比较大,我上传到pastebin
标签: qt tcp qnetworkaccessmanager