2013-05-13 6 views
0

QTcpSocket을 사용하여 200MB/초 (5 초 전송)로 1MB 파일을 보내려고합니다. ReadyRead 슬롯 함수는 먼저 파일 크기 (헤더)를 읽은 다음 소켓에서 file_size 바이트를 읽는 동안 차단하는 스레드를 시작합니다. 그러나 readyRead 슬롯 기능은 파일 전송이 끝나기 전에 끝나기 때문에 readyRead 함수 (새로운 ReadyReads가 방출 됨)에 대한 새로운 호출이 간섭하지 않을 것입니까?QTcpSocket : 대용량 파일을 보낼 때 여러 개의 ReadyReads

여기에서 읽으십시오 : How to make sure that readyRead() signals from QTcpSocket can't be missed? 슬롯 기능을 사용하는 동안 새로운 ReadyReads가 방출되지 않습니다.

답변

0

내 자신의 문제에 대한 분명한 해결책은 가능한 경우 슬롯 함수 내부에서 readyread() 신호를 슬롯 함수에서 disconnect()하는 것입니다.

0

별도의 스레드를 시작할 필요가 없습니다. 모든 readyRead() 신호를 처리하고 새 데이터를 파일에 추가하십시오. 결국 모든 파일이 수신됩니다.

한 번에 전체 전송을받을 필요는 없으며 한 번에 파일을 청크로 작성하면됩니다.