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