Domanda

Conosco l'uso di Bonjour per i servizi pubblicitari nel dominio "locale". Ho lavorato attraverso diversi esempi e conosco le corrispondenti classi di cacao che uso per questo.

Sono curioso di sapere come pubblicizzo un semplice servizio di bonjour a una sottorete diversa. In particolare, sto cercando di scrivere un servizio di rete che funziona sul mio desktop che è collegato tramite Ethernet. Il client viene eseguito su un dispositivo mobile (iPhone/iPad) collegato tramite WiFi. Nella mia configurazione di rete, il WiFi è su una sottorete diversa rispetto all'Ethernet. Tuttavia, entrambi sono dietro il firewall. Non ho bisogno di fare pubblicità al di fuori del firewall, voglio semplicemente che i clienti WiFi possano vedere i servizi pubblicizzati da un server Ethernet Connected.

È possibile? So che Bonjour dovrebbe supportare la comunicazione tra le sottoreti, ma ogni volta che provo a leggere su questa funzione si tuffa in profondità nei record DNS e quant'altro. Sono uno sviluppatore di applicazioni ... non ho idea di quella roba, né voglio che gli utenti debbano preoccuparsi. Mi manca qualcosa di semplice?

È stato utile?

Soluzione

Questa non è una tipica domanda di programmazione, ma vedo che è un enorme ostacolo nel testare il tuo codice basato sul bonjour.

Bonjour supporta due meccanismi per i server per informare i clienti sulla loro esistenza, multicast sulla rete locale prima, DNS secondo.

I multicast sono facili da usare perché non esiste una configurazione, sfortunatamente può essere utilizzato solo sulla stessa rete.

I DNS hanno il lusso di lavorare su router (Internet), ma richiede nameserver e client correttamente configurati utilizzando quel nameserver.

Penso che tu stia avendo solo due opzioni.

  1. Pubblicizza il tuo servizio Bonjour su WiFi Network
  2. configurare il tuo DNS

Nel primo caso è importante rendersi conto che il servizio non deve necessariamente essere pubblicizzato dalla propria applicazione in esecuzione su un Mac. Puoi usare l'utilità dns-sd per registrare qualsiasi indirizzo/porta IP come servizio Bonjour sulla rete. Affinché questo funzioni hai bisogno di una macchina (Mac, Linux) che è collegata al tuo WiFi ed esegui dns-sd lì in modo simile a questo:

dns-sd -P "Stack Overflow" _http._tcp . 80 stackoverflow.com 69.59.196.211

Ciò registrerebbe un servizio "http" con nome "stack overflow" come servizio di bonjour. Dai un'occhiata: eseguilo nel terminale e controllalo nei segnalibri di Safari sotto Bonjour. Allo stesso modo in cui è possibile registrare la tua applicazione.

Sfortunatamente è necessario eseguirlo su una macchina collegata alla rete WiFi. Ciò significa che la tua applicazione Mac pubblicizzerà sulla propria rete Ethernet, dns-sd pubblicizza sul 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 avere servizi registrati dinamicamente in DNS. Puoi semplicemente codificare il nome del tuo Mac e la porta dell'app nella configurazione DNS. Queste sono solo 4 righe che devono essere aggiunte al file della 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.

Le prime due righe indicano ai clienti (dispositivi iOS nel tuo caso) che Bonjour è abilitato per questo dominio. La terza riga dice ai clienti che esiste un servizio di tipo "Servizio app ICOOL" icool a disposizione. La quarta riga indica ai clienti l'indirizzo attuale e la porta del servizio.

I clienti cercheranno voci DNS per i "domini di ricerca" configurati (o ottenuti tramite DHCP). Controlla le impostazioni della rete.

Puoi eseguire nameserver sul tuo Mac, qualche Linux Box o puoi utilizzare servizi come Dyndns.com.

Spero che sia di aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top