Я ищу предложения по наилучшему способу отправки/получения данных с удаленного устройства GPRS через порт 80.
Создание простого TCP-сокета на случайном порту прекрасно работает, но многие операторы разрешают только HTTP-трафик HTTP-порта через их прокси, а затем ожидают HTTP-данные ascii (для которых они могут изменять заголовки по мере необходимости.
Итак, должно ли мое устройство создать запрос POST на постоянном http-соединении, а затем получить ответ с кодировкой base64 от веб-службы? Я не уверен, как ведут себя мобильные прокси, когда участвуют двоичные данные. Есть ли рекомендуемый способ сделать это?
Я могу адаптировать как прошивку устройства, так и приложение на стороне сервера.
[изменить]
Я хотел бы знать, существует ли стандартный (более или менее) способ сделать это. Для различной регистрации данных и промышленных систем необходимо отправлять множество двоичных данных по соединениям сокетов. Для Ethernet-соединений обычно возникают проблемы с адаптацией некоторых брандмауэров, но постоянные двоичные соединения не создают проблем с произвольными портами.
Мобильные интернет-провайдеры, однако, имеют тенденцию ограничивать свои "планы данных" только для порта 80. Они также берут на себя смелость связываться с заголовками HTTP и, возможно, самими данными HTML. Здесь мне нужно определить потенциальные ловушки и способы их обойти.
- Будет ли просто отправлять данные с кодировкой base64?
- Как обрабатываются сеансы HTTP? Произвольные сокеты могут поддерживаться в течение длительного времени, но HTTP-глаголы обычно недолговечны. Означает ли это, что мне нужно будет создать новое соединение для каждого пакета данных? Или есть способ отправить ответы сервера в кусках по одному соединению?
- Каким образом может быть прокси-сервер ISP с данными или заголовками? Например, прокси-сервер иногда может поддерживать соединение, даже если сервер закрывает его.