2013-05-13 5 views
0

Я хочу отправить файл 1 МБ со скоростью 200 Кбит/с (передача 5 секунд) с помощью QTcpSocket. Функция слота ReadyRead сначала считывает размер файла (заголовок), а затем запускает поток, который блокируется при чтении байтов file_size из сокета. Но поскольку функция slotRead заканчивается до передачи файла, не будут ли появляться новые вызовы функции readyRead (новые выпущенные ReadyReads), которые будут мешать?QTcpSocket: несколько ReadyReads при отправке большого файла

Я читаю здесь: How to make sure that readyRead() signals from QTcpSocket can't be missed?, что пока вы находитесь в функции слота, никаких новых ReadyReads не будет выбрано.

ответ

0

очевидным решением моей проблемы было бы отсоединить() сигнал readyread() от функции слота внутри функции слота, если это возможно.

0

Вам не нужно начинать отдельный поток. Просто обработайте каждый сигнал readyRead() и добавьте в файл новые данные. В конце концов будет получен весь файл.

Вам не нужно получать всю передачу за один раз, просто напишите файл куском за раз.