QNetworkAccessManager,重置TCP连接

时间:2016-07-14 16:45:41

标签: c++ qt sockets networking tcp

我正在Qt中编写一个程序来向嵌入式设备发出HTTP请求,并使用QNetworkAccessManager执行此操作,除了以下情况之外它运行良好。

嵌入式设备只接受1个TCP连接。如果在TCP连接处于活动状态时断开连接(拉线),则设备将进入挂起状态。它不知道连接已经丢失,不能再接受了。

有没有办法手动重置QNetworkAccessManager,以便我可以在每个请求上强制建立新连接,并在请求完成后正常关闭连接?

1 个答案:

答案 0 :(得分:1)

在回复中,检查是否设置了QNetworkRequest::HttpPipeliningWasUsedAttribute属性。如果是,则这是您的问题:您必须修改您的请求以强制QNetworkRequest::HttpPipeliningAllowedAttribute上的错误值。如果没有流水线操作,则每个请求都在单独的连接上发送。

请注意QNetworkAccessManager可以并行启动多个请求。您必须确保只允许一个请求未完成,并且只在前一个请求完成时才发出一个新请求。