Sur la base de récentes découvertes empiriques et de divers messages sur le web, il semble qu'une application fonctionnant sur un iPhone avec un hotspot personnel activé ne peut pas envoyer de diffusions et/ou de multidiffusions sur le réseau du hotspot personnel. Quelqu'un peut-il nous éclairer sur la cause de ce problème ?
L'application
J'ai une application IOS, construite avec du code C++ multiplateforme, qui diffuse et multidiffuse sa présence sur le réseau sur lequel elle est exécutée. L'application fonctionne parfaitement lorsque l'iPhone est connecté à un réseau Wi-Fi. Dans ce cas, les autres appareils du réseau reçoivent les diffusions/multidiffusions, et tout fonctionne correctement. Cela peut être vérifié facilement en connectant un ordinateur exécutant WireShark au réseau - les paquets de diffusion/multidiffusion peuvent être vus dans la trace des paquets.
Inutile de préciser que l'application fonctionne bien sur un iPhone connecté à un réseau Wi-Fi local.
Le problème
Lorsque j'exécute l'application sur un iPhone dont le hotspot personnel est activé, aucune diffusion/multicast n'est émise sur le réseau du hotspot. Ceci peut être vérifié en utilisant WireShark, qui ne montre aucun paquet de ce type dans sa trace.
Existe-t-il une contrainte concernant l'utilisation d'un hotspot personnel comme routeur de réseau capable de gérer les diffusions et les multidiffusions ?
Lorsque j'ai demandé une page web sur mon appareil "WireSharking" en utilisant un navigateur, le hotspot personnel répond correctement à tous les paquets, renvoyant le contenu web.
Informations sur les garanties
Je suis tombé sur d'autres passages de Stack Overflow qui signalent les mêmes problèmes, ou des problèmes similaires :
- La connexion TCP ne fonctionne pas correctement lorsque l'iPhone est utilisé comme hotspot
- Échec de l'envoi de la diffusion ssdp par le hotspot personnel
Un bon tutoriel pour l'écriture d'une telle application de diffusion/multidiffusion sur iPhone est l'ouvrage de Michael Tyson intitulé " Le making of de Talkie : Diffusion et multidiffusion multi-interface ". Il suffit de dire que mon application est conforme à toutes les exigences (par exemple, en définissant les options de socket SO_BROADCAST, SO_DONTROUTE et IP_MULTICAST_IF, le cas échéant).
Une réponse à la référence (1) ci-dessus écrit " Serait-ce parce que le hotspot personnel introduit la traduction d'adresse réseau ? ". J'ai filtré les traces WireShark pour ne montrer que les paquets connectés à l'IP du hotspot, et il n'y a aucune preuve que le hotspot personnel envoie quoi que ce soit à une adresse NAT.
En résumé
Quelqu'un peut-il expliquer pourquoi un iPhone fonctionnant avec un hotspot personnel ne diffuse pas/multiplie les paquets, et comment résoudre le problème ?
Merci d'avance.
P.S. J'ai initialement posté cette requête sur Stack Overflow et j'ai appris l'existence de ce forum plus orienté vers Apple.