Sulla base dei recenti risultati empirici e sulla base di 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ò fare luce sulla causa di questo problema?
L'applicazione
Ho un'applicazione IOS, costruita con codice C ++ multipiattaforma, che trasmette e multicast la sua presenza sulla rete su cui è in esecuzione. L'applicazione funziona perfettamente quando l'iPhone è collegato a una rete Wi-Fi. In questo caso, altri dispositivi sulla rete ricevono le trasmissioni / i multicast e tutto funziona correttamente. Ciò può essere verificato facilmente collegando un computer che esegue WireShark alla rete: i pacchetti broadcast / multicast possono essere visualizzati nella traccia dei pacchetti.
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 con il suo hotspot personale abilitato, nessuna trasmissione / multicast viene rilasciata sulla rete dell'hotspot. Questo può essere verificato usando WireShark, che non mostra tali pacchetti nella sua traccia.
Esistono vincoli all'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 i contenuti Web.
Informazioni collaterali
Mi sono imbattuto in altri passati di Stack Overflow che segnalano gli stessi problemi o simili:
- La connessione TCP non funziona correttamente quando si utilizza iPhone come hotspot
- Impossibile inviare la trasmissione ssdp tramite hotspot personale
Un buon tutorial per scrivere un'applicazione di trasmissione / multicasting su iPhone è " The Making of Talkie: trasmissione multi-interfaccia e multicast " di Michael Tyson . Basti dire che la mia applicazione è conforme a tutti i requisiti (ad es., Impostare 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 Network Address Translation? ". Ho filtrato le tracce di WireShark per mostrare solo i pacchetti collegati all'IP dell'hotspot e non ci sono prove che l'hotspot personale abbia inviato 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.
PS Inizialmente ho pubblicato questa query su Stack Overflow e ho appreso questo forum più orientato alla Apple.