In base a recenti risultati empirici e in base a vari post sul Web, sembra che un'applicazione in esecuzione su un iPhone con hotspot personale abilitato non possa inviare trasmissioni e / o multicast sulla rete dell'hotspot personale. Qualcuno può far luce sulla causa di questo problema?
L'applicazione
Ho un'applicazione IOS, costruita con codice C ++ multipiattaforma, che trasmette e trasmette in multicastazione la sua presenza sulla rete su cui è in esecuzione. L'applicazione funziona perfettamente quando l'iPhone è connesso a una rete Wi-Fi. In questo caso, altri dispositivi sulla rete ricevono le trasmissioni / i multicast e tutto funziona correttamente. Questo può essere verificato facilmente collegando un computer che esegue WireShark alla rete - i pacchetti broadcast / multicast possono essere visti nella traccia del pacchetto.
Inutile dire che l'applicazione funziona bene su un iPhone collegato a un Wi-Fi locale.
Il problema
Quando eseguo l'applicazione su un iPhone che ha attivato il proprio hotspot personale, nessuna trasmissione / trasmissione multicast viene rilasciata sulla rete dell'hotspot. Questo può essere verificato usando WireShark, che non mostra tali pacchetti nella sua traccia.
Esiste un vincolo sull'utilizzo di un hotspot personale come router di rete in grado di gestire trasmissioni e multicast?
Quando ho richiesto una pagina web sul mio dispositivo "WireSharking" utilizzando un browser, l'hotspot personale risponde correttamente a tutti i pacchetti, restituendo il contenuto Web.
Informazioni collaterali
Mi sono imbattuto in altri passaggi Stack Overflow che riportano lo stesso problema o problemi simili:
- La connessione TCP non funziona correttamente quando si usa iPhone come hotspot
- Impossibile inviare broadcast ssdp dall'hotspot personale
Un buon tutorial per scrivere un'applicazione di broadcasting / multicasting su iPhone è " The Making of Talkie: trasmissione multi-interfaccia e multicast ". Basti dire che la mia applicazione è conforme a tutti i requisiti (ad esempio, impostando le opzioni socket SO_BROADCAST, SO_DONTROUTE e IP_MULTICAST_IF dove appropriato).
Una risposta al riferimento (1) sopra scrive " Potrebbe essere perché l'hotspot personale introduce la Traduzione degli indirizzi di rete? ". Ho filtrato le tracce di WireShark per mostrare solo i pacchetti connessi all'IP dell'hotspot e non vi è alcuna prova che l'hotspot personale invii qualcosa a un indirizzo NAT.
In sintesi
Qualcuno può spiegare perché un iPhone che esegue un hotspot personale non trasmette pacchetti multicast e come risolvere il problema?
Molte grazie in anticipo.
P.S. Inizialmente avevo pubblicato questa query on Overflow dello stack , e ho imparato a conoscere questo forum più orientato ad Apple.