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

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

13 ответов

25 просмотров

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

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 Теперь работает как часы. Видимо поэтому пишут дли...

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

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

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

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта