Questa non è una tipica domanda di programmazione, ma vedo che è un enorme ostacolo nel testare il codice basato su Bonjour.
Bonjour supporta due meccanismi per i server per informare i client sulla loro esistenza, prima i multicast sulla rete locale, il secondo DNS.
I multicast sono facili da usare perché non c'è alcuna configurazione, purtroppo può essere utilizzato solo sulla stessa rete.
DNS ha il lusso di lavorare su router (Internet), ma richiede server dei nomi e client correttamente configurati che utilizzano quel server dei nomi.
Penso che tu stia avendo solo due opzioni.
- pubblicizzare il vostro servizio Bonjour sulla rete WiFi
- configurare il proprio DNS
Nel primo caso, è importante rendersi conto che il servizio non deve necessariamente essere pubblicizzati per la propria applicazione in esecuzione su un Mac. È possibile utilizzare l'utilità dns-sd
per registrare qualsiasi indirizzo IP/porta come servizio Bonjour sulla rete. Per questo lavoro è necessario una macchina (Mac, Linux), che è collegato al WiFi, ed eseguire dns-sd
lì in un modo simile a questo:
dns-sd -P "Stack Overflow" _http._tcp . 80 stackoverflow.com 69.59.196.211
Ciò crea un nuovo servizio di "http" con il nome di "Stack Overflow "come servizio Bonjour. Controllalo - eseguilo nel terminale e controllalo in Segnalibri di Safari sotto Bonjour. Allo stesso modo puoi registrare la tua domanda.
Sfortunatamente è necessario eseguirlo su una macchina collegata alla rete WiFi. Ciò significa che l'applicazione Mac pubblicizzerà sulla propria rete Ethernet, le pubblicità dns-sd
su WiFi.
La seconda opzione è un po 'spaventosa, ma non è un grosso problema se sei disposto a sporcarti le mani con un po' di amministrazione.
Ancora una volta, non è necessario disporre di servizi registrati dinamicamente nel DNS. Puoi semplicemente codificare in modo rigido il nome del tuo Mac e la porta della tua app nella configurazione DNS. Quelle sono solo 4 righe che devono essere aggiunte al file di zona (file di configurazione DNS).
b._dns-sd._udp IN PTR @ ; b = browse domain
lb._dns-sd._udp IN PTR @ ; lb = legacy browse domain
_icool._tcp PTR iCool\ App\ Service._http._tcp
iCool\ App\ Service._http._tcp SRV 0 0 8888 macpro.domain.com.
prime due righe dice client (dispositivi iOS nel tuo caso) che Bonjour è abilitato per questo dominio. La terza riga indica ai client che è disponibile un servizio "Servizio app iCool" di tipo icool
. La quarta riga indica ai clienti l'indirizzo corrente e la porta del servizio.
I client cercheranno le voci DNS per i "domini di ricerca" configurati (o ottenuti tramite DHCP). Controlla le tue impostazioni di rete.
È possibile eseguire nameserver sul proprio Mac, qualche box Linux, oppure è possibile utilizzare servizi come dyndns.com.
Spero che questo aiuti.
Sei sicuro che questa è una domanda di programmazione? Mi sembra più un problema di configurazione di rete. –