Страницы

Поиск по вопросам

пятница, 5 июля 2019 г.

Возникновение сигнала SIGPIPE (ошибка EPIPE) при обращении из браузера Android устройства

Написал демон на С++ (Линукс). Он слушает запросы от устройства на Android.
Причем сделал универсально: в браузере на Android в адресной строке указывается IP-адрес/сайт (на котором слушает демон), и сам демон посылает в ответ файл, который сохраняется в браузере.
Использую неблокирующие сокеты, TCP и т.д.
Спустя некоторое время после начала отправки файла приходит ошибка EPIPE (errno = 32 - Broken pipe). После этой ошибки я закрываю сокет.
Не знаю как будет работать на других Android телефонах, но мой делает повторный запрос и скачивает файл со второго раза без ошибки EPIPE. Боюсь, что на других телефонах файл просто не скачается.
Если я проделываю то же самое со своего компьютера, то никаких ошибок EPIPE не возникает.
Хотелось бы разобраться почему так происходит.


Ответ

Разобрался... Потратил кучу времени, чтобы выяснить - просто так на моём китайском телефоне (хотя вроде хуавей хвалят) работает браузер...
в нете попадается информация, что стандартный загрузчик на Андроиде (особенно ниже 3.х) с ошибками скачивает файлы, и предлагается установить альтернативный браузер со встроенным менеджером загрузок, может Вам тоже этот подход попробовать? – margosh

Комментариев нет:

Отправить комментарий