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