Android обмен данными с сервером, Socket или httpurlconnection?
Разрабатываю клиент-серверное приложение Android, в котором от сервера->клиенту данные будут передаваться редко, но их будет много, со стороны клиента будет передаваться немного данных, но передаваться они будут гораздо чаще (желательно раз в 5 сек, но можно увеличить до 10-15 сек), взаимодействие, в основном в мобильной сети, т.е. соединение не стабильное, может прерываться.
Нашел механизмы Socket и httpurlconnection, но как-то не нагуглил сравнения между ними, Socket, как я понимаю держите стабильное соединение, а httpurlconnection подключается "один раз" и для нормального обмена необходимо делать short или long polling, т.е. на первый взгляд лучше использовать Socket, но в сети я чаще вижу реализации с httpurlconnection.
Почему не используют socket-ы или я чего не понимаю в использовании socket-ов на Android?
ну во-первых нужно определиться с протоколом. будете ли вы делать свой протокол обмена клиент-сервер или возьмете http.
http это уже стандартный протокол со всеми вытекающими. и хорошим клиентом для андроида.
свой протокол - все ваши желания. но делаете сами.
кроме этого нужно учитывать что готовые клиенты http уже готовы для сжатых данных, для работы с REST. для cache. Для них уже сразу можно работать с Retrofitom & json (Gson), либо распарсить самому.
Конечно же для http уже готовые сервера. остается сделать только ответы-скрипты.
Кроме этого часто в какой-либо корпоративной сети админ запрещает все кроме mail & http.
Т.е. плюсов достаточно много.
Но у http это работа клиента с сервером по запросам. те. клиент послал запрос - получил ответ. Сервер просто так не посылает свои данные клиенту.
Если для вас это важно то http не подойдет.