Según los últimos descubrimientos empíricos, y en base a varios posts en la web, parece que una aplicación que se ejecuta en un iPhone con el hotspot personal activado no puede enviar difusiones y/o multidifusiones a la red del hotspot personal. ¿Puede alguien aclarar la causa de este problema?
La aplicación
Tengo una aplicación IOS, construida con código C++ multiplataforma, que difunde y multiplica su presencia en la red en la que se ejecuta. La aplicación funciona perfectamente cuando el iPhone está conectado a una red Wi-Fi. En este caso, otros dispositivos de la red reciben las emisiones/multicasts, y todo funciona correctamente. Esto puede verificarse fácilmente conectando un ordenador que ejecute WireShark a la red: los paquetes de difusión/multidifusión pueden verse en el rastreo de paquetes.
Ni que decir tiene que la aplicación funciona bien en un iPhone conectado a una Wi-Fi local.
El problema
Cuando ejecuto la aplicación en un iPhone que tiene su hotspot personal activado, no se emiten emisiones/multicasts en la red del hotspot. Esto puede verificarse utilizando WireShark, que no muestra tales paquetes en su traza.
¿Existe alguna restricción en cuanto a la utilización de un hotspot personal como un router de red capaz de manejar difusiones y multidifusiones?
Cuando solicité una página web en mi dispositivo "WireSharking" utilizando un navegador, el hotspot personal responde correctamente a todos los paquetes, devolviendo el contenido de la web.
Información colateral
Me he encontrado con otros pasados de Stack Overflow que informan de los mismos, o similares, problemas:
- La conexión TCP no funciona correctamente cuando se utiliza el iPhone como hotspot
- Fallo en el envío de la emisión ssdp por el hotspot personal
Un buen tutorial para escribir una aplicación de emisión/multidifusión de este tipo en el iPhone es el libro de Michael Tyson " La creación de Talkie: Difusión multiinterfaz y multidifusión ". Basta con decir que mi aplicación cumple con todos los requisitos (por ejemplo, estableciendo las opciones de socket SO_BROADCAST, SO_DONTROUTE, e IP_MULTICAST_IF cuando corresponde).
Una respuesta a la referencia (1) anterior escribe " ¿Podría ser porque el hotspot personal introduce la traducción de direcciones de red? ". He filtrado las trazas de WireShark para mostrar sólo los paquetes conectados a la IP del hotspot, y no hay evidencia de que el hotspot personal envíe nada a una dirección NAT.
En resumen
¿Alguien puede explicar por qué un iPhone que ejecuta un hotspot personal no transmite/multidifunde paquetes, y cómo resolver el problema?
Muchas gracias de antemano.
P.D. Originalmente publiqué esta consulta en Stack Overflow y me enteré de este foro más orientado a Apple.