내가 같은 상황을 겪고있어
마지막 방법은이 같은 함수를 호출하는 타이머를 설정하는 것입니다 Qt 5.3.0 (아직 베타 버전은 괜찮지 만 Qt5.2.x에서 같은 버그가 재현되었다고 생각합니다).
QNetworkAccessManager는 ftp에 대해 fileNotFound 오류를 올바르게보고하지만 결코 복구하지 못합니다. 이후의 모든 ftp 요청은 동일한 오류 메시지와 함께 실패합니다.
(존재하지 않는) badFile.txt를 가져 오려고합니다. file2.txt를 찾을 수 없다는 올바른 메시지가 나타납니다. 우리는 다음 (존재하는) goodFile.txt에 액세스하려고하면 우리는 이전 오류가 영원히 QNetworkAccessManager에 갇혀 유지할 것으로 보인다
Error while downloading ftp://ftp.url.com/goodFile.txt:
Downloading file failed:
Can't open /badFile.txt: No such file or directory"
를 얻을.
저에게 도움이되는 유일한 해결책은 ftp를 찾을 수 없음 오류가 발생할 때마다 새 QNetworkAccessManager를 삭제하고 작성하는 것입니다. 이는 단순히 QNetworkReply 오류 (QNetworkReply :: NetworkError) 신호에 연결하여 수행됩니다. elmigranto가 말했듯이, 완성 된 신호는 각 요청에 대해 출력됩니다. 이것은 분명히 QNetworkAccessManager가 단일 요청을 처리하는 경우에만 작동 할 수 있습니다. 그렇지 않으면 동일한 매니저가 처리하는 병렬 요청을 중단하지 않도록 특별한주의를 기울여야합니다.
QNetworkAccessManager 완료 (QNetworkReply *) 및 QNetworkReply finished() 신호는 정확히 동일한 작업을 수행합니다. Qt 문서에 명시된 바와 같이이 두 신호는 함께 방출됩니다. 이것은 버스터가 말한 것처럼이 문제에 대한 해결책이 아닙니다.
타이머 설정은 다른 용도 (예 : 연결 시간 제한)에 유용 할 수 있지만이 특정 문제도 해결되지 않습니다.
여기에 몇 가지 샘플 코드가 있습니다. https://gist.github.com/3153709 – IslandCow
재설정을 위해 QNAM을 '삭제'하고 새 것을 생성 할 수 있습니다 ('QNetworkReply :: fininshed'가 생성됩니다). 또한,'NetworkHandler :: finished()'에서'reply-> deleteLater()'를 잊지 마라. 브라우저로 잘못된 파일을 다운로드하려고하면 어떻게됩니까? (문제가 해결되면 버스터의 답변을 수락하십시오.) – elmigranto