весит 1мБ, через сокеты удается получить только 30кБ и удается увидеть только первые несколько линий картинки. Странно, что абсолютно разные картинки качает только по 30кБ. Код написан так, что клиент перестает получать данные из за размера последнего пакета. По нему и определяется конец передачи, возможно в этом проблема
а при скачивании вы куда пихаете данные ? в стек или кучу? вы же не получаете файл вы получаете биты. может у вас переменная по памяти ограничена которая потом в файл записывает
Данные даже не сохранял по приколу, просто считал количество пришедших байтов. Почти всегда только 30кБ отдает сервер
сервер отдаёт всё что вы можете принять, а можете ли вы этот обьём принять это уже другое, но я не спец я просто предпологаю
ну пришли 30 вы их забрали дальше ждите остальные в чем вопрос то?
Вопрос в том чтобы понять, когда останавливаться, а когда ждать
что значит когда? это вы должны знать. есть начало пакета и конец, согласна протокола. если в протоколе положили болт на это. мол парсите сами, ну да парсите данные чтоб знать где есть кто.
Раньше этим ограничением служило деление с остатком всех пришедших байтов на 1369 или 16384. Сейчас же на границе к 30кБ размеры порций странные и мои алгоритмы, работающие уже 3 года, летят в труху
ну протоколы в основном это либо запрос-ответ. либо запрос - поток. и там и там, вам должно быть понятно как понимать сколько ждать. и где начинаются данные. возьмем полу текстовый полу бинарный протокол mjpeg. вы мол хочу. вам сервер шапку из текста, где текстом написан размер следующего файла jpeg который летит следом. вы находите текст по заголовку, находите там размер, парсите из строки в размер. находите конец текстовой шапки (head) и понимаете что вот отсюда начало файла. размер вы его знаете. и так далее по кругу.
Теперь работает как часы. Видимо поэтому пишут длину данных, иначе клиент не поймет когда останавливаться
А почему вы используете сокеты, а не qnetworkaccessmanager функционал?
Эта либа была написана еще до знакомства с qt, да и в своей либе приятнее покопаться, заодно узнать новые тонкости работы пк
да. длинная либо где-то в заголовке. либо она известна согласна запросу. либо используются маркеры, которые ищутся в потоке.
Обсуждают сегодня