Busco sugerencias sobre la mejor manera de enviar/recibir datos de un dispositivo GPRS a distancia, a través del puerto 80.El envío de datos binarios a través de http
Creación de un socket TCP sin formato en un puerto aleatorio funciona bien, pero muchos los operadores solo permiten el tráfico HTTP del puerto 80 a través de sus proxies, y luego esperan datos ascii HTTP (para los cuales pueden modificar los encabezados según sea necesario.
Entonces, ¿debería mi dispositivo crear una solicitud POST en una conexión http persistente y luego recibir un respuesta codificada en base64 del servicio web? No estoy seguro de cómo se comportan los proxys móviles cuando se trata de datos binarios. ¿Hay alguna manera recomendada de hacerlo?
Puedo adaptar tanto el firmware del dispositivo como la aplicación del servidor.
[Editar]
me gustaría saber si hay una manera estándar (más o menos) para hacer esto. Para varios sistemas industriales y de registro de datos, existe la necesidad de enviar muchos datos binarios a través de conexiones de socket. En el caso de las conexiones de Ethernet, normalmente solo hay problemas relacionados con la adaptación de algunos firewalls, pero las conexiones binarias persistentes no tienen problemas para establecerse en puertos arbitrarios.
Los ISP móviles, sin embargo, tienden a limitar sus "planes de datos" solo para el puerto 80. También se toman la libertad de meterse con los encabezados HTTP, y potencialmente con los datos HTML en sí. Aquí es donde necesito identificar las posibles dificultades y las formas de eludirlas.
- ¿Simplemente enviará base64 datos codificados?
- ¿Cómo se manejan las sesiones HTTP? Los sockets arbitrarios se pueden mantener vivos durante mucho tiempo, pero los verbos HTTP generalmente son de corta duración. ¿Esto significa que tendré que crear una nueva conexión para cada paquete de datos? ¿O hay una forma de enviar las respuestas del servidor en fragmentos, a través de una sola conexión?
- ¿De qué manera puede un proxy de ISP interferir con los datos o los encabezados? Por ejemplo, un proxy a veces puede mantener viva una conexión, incluso si el servidor la cierra.
+1 Gracias. Una pequeña aclaración: * Los operadores móviles normalmente limitan la manipulación de las respuestas a los tipos de contenido que entienden *: ¿eso significa que debo usar un tipo de contenido que ** no ** entiendan? – Groo
Las transformaciones realizadas por los operadores móviles son típicamente para tipos de medios donde saben que se puede devolver una respuesta 'equivalente'. Los ejemplos serían la compresión de una imagen JPEG o la incorporación de CSS/Javascript en un archivo HTML. Si está enviando datos en un formato propietario, debería usar un tipo de medio como 'application/vnd.company-name.tipo de archivo': es poco probable que los intermediarios lo transformen, ya que no entienden el formato. – johnstok
@johnstok El encabezado Content-Length especifica la longitud de cualquier dato en bytes. Por lo tanto, independientemente de si los datos cumplen con los estándares o si son propietarios, los operadores pueden reenviar esos muchos bytes. – ardsrk