Кто нибудь делал скачивание через HTTP с помощью сокетов? Картинка

весит 1мБ, через сокеты удается получить только 30кБ и удается увидеть только первые несколько линий картинки. Странно, что абсолютно разные картинки качает только по 30кБ. Код написан так, что клиент перестает получать данные из за размера последнего пакета. По нему и определяется конец передачи, возможно в этом проблема

13 ответов

4 просмотра

а при скачивании вы куда пихаете данные ? в стек или кучу? вы же не получаете файл вы получаете биты. может у вас переменная по памяти ограничена которая потом в файл записывает

hewlet-packard Автор вопроса
Egefix
а при скачивании вы куда пихаете данные ? в стек и...

Данные даже не сохранял по приколу, просто считал количество пришедших байтов. Почти всегда только 30кБ отдает сервер

hewlet packard
Данные даже не сохранял по приколу, просто считал ...

сервер отдаёт всё что вы можете принять, а можете ли вы этот обьём принять это уже другое, но я не спец я просто предпологаю

hewlet packard
Данные даже не сохранял по приколу, просто считал ...

ну пришли 30 вы их забрали дальше ждите остальные в чем вопрос то?

hewlet-packard Автор вопроса
Stas Koynov
ну пришли 30 вы их забрали дальше ждите остальные ...

Вопрос в том чтобы понять, когда останавливаться, а когда ждать

hewlet packard
Вопрос в том чтобы понять, когда останавливаться, ...

что значит когда? это вы должны знать. есть начало пакета и конец, согласна протокола. если в протоколе положили болт на это. мол парсите сами, ну да парсите данные чтоб знать где есть кто.

hewlet-packard Автор вопроса
Stas Koynov
что значит когда? это вы должны знать. есть начало...

Раньше этим ограничением служило деление с остатком всех пришедших байтов на 1369 или 16384. Сейчас же на границе к 30кБ размеры порций странные и мои алгоритмы, работающие уже 3 года, летят в труху

hewlet packard
Раньше этим ограничением служило деление с остатко...

ну протоколы в основном это либо запрос-ответ. либо запрос - поток. и там и там, вам должно быть понятно как понимать сколько ждать. и где начинаются данные. возьмем полу текстовый полу бинарный протокол mjpeg. вы мол хочу. вам сервер шапку из текста, где текстом написан размер следующего файла jpeg который летит следом. вы находите текст по заголовку, находите там размер, парсите из строки в размер. находите конец текстовой шапки (head) и понимаете что вот отсюда начало файла. размер вы его знаете. и так далее по кругу.

hewlet-packard Автор вопроса
Stas Koynov
ну протоколы в основном это либо запрос-ответ. либ...

Теперь работает как часы. Видимо поэтому пишут длину данных, иначе клиент не поймет когда останавливаться

hewlet packard
screenshot Теперь работает как часы. Видимо поэтому пишут дли...

А почему вы используете сокеты, а не qnetworkaccessmanager функционал?

hewlet-packard Автор вопроса
Sergey eSKon
А почему вы используете сокеты, а не qnetworkacces...

Эта либа была написана еще до знакомства с qt, да и в своей либе приятнее покопаться, заодно узнать новые тонкости работы пк

hewlet packard
screenshot Теперь работает как часы. Видимо поэтому пишут дли...

да. длинная либо где-то в заголовке. либо она известна согласна запросу. либо используются маркеры, которые ищутся в потоке.

Похожие вопросы

Обсуждают сегодня

Всем привет) Я попробовал турбо роутер октябрьский. Вроде доволен, но возникла проблемка) Бутстраповские модалки плодят .modal-backdrop элементы Если модалка открыта, должне...
Виталий
3
Так а кто может спарсить всех участников чата? Идишники
Magic
18
да пофиг на капчу зашел в чат и молчишь при этом ты нонейм? пошел вон
Magic
17
Как удалить health check в Consul? Казалось бы, это должно быть не сложно, но я не могу найти в документации ничего про это, только про добавление service с health check "в н...
Roman
2
Я тебе про общие вопросы, а не про узконаправленные . Ты че будешь в чате спрашивать как хтмл разметку сделать?!
rusteg
3
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
13
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Нужно магазин с тильды на опен кат перенести Есть кто умеет? В лс
Magic
8
Privet! Mozhet jesti ideji - nemogu sdelatj upload backup s filestore cerez WEB. Fail okolo 450mb, eto mozhet bitj prichinoi? Nemogu ponjatj..kak zagruzitj backup... Poluchaju...
Matiss 🤘 Black Oak IT 🌳 Batumi 🌴 Latvija
5
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Карта сайта