我正在Qt中编写一个程序来向嵌入式设备发出HTTP请求,并使用QNetworkAccessManager执行此操作,除了以下情况之外它运行良好。
嵌入式设备只接受1个TCP连接。如果在TCP连接处于活动状态时断开连接(拉线),则设备将进入挂起状态。它不知道连接已经丢失,不能再接受了。
有没有办法手动重置QNetworkAccessManager,以便我可以在每个请求上强制建立新连接,并在请求完成后正常关闭连接?
答案 0 :(得分:1)
在回复中,检查是否设置了QNetworkRequest::HttpPipeliningWasUsedAttribute
属性。如果是,则这是您的问题:您必须修改您的请求以强制QNetworkRequest::HttpPipeliningAllowedAttribute
上的错误值。如果没有流水线操作,则每个请求都在单独的连接上发送。
请注意QNetworkAccessManager
可以并行启动多个请求。您必须确保只允许一个请求未完成,并且只在前一个请求完成时才发出一个新请求。