2010-04-29 17 views
7

Ho un'app per iPhone che pubblica tramite Bonjour. La controparte del Mac funziona, sincronizza e scambia dati. Ora devo portare quella piccola app per Mac a Windows. Ho deciso di andare con .NET (perché è quello che so).Utilizzando il servizio Bonjour di Apple da .NET?

L'app non è complessa, ma sono nelle prime fasi. Ho bisogno di navigare/scoprire i servizi di Bonjour. Per questo compito, ho scaricato Mono.Zeroconf e l'ultimo SDK di Apple (che include un paio di esempi C#).

Non sto davvero incollando il codice perché sto davvero copiando/incollando i campioni. Infatti, Mono.Zeroconf ha un MZClient.exe che può essere usato per testare "tutte le API".

Il mio primo test era -nella stessa finestra- apri due cmd.exe e avvia un MZclient registrando un servizio e dall'altra lo avvio e "lo scopri".

Non funziona.

Ecco il server:

C:\MZ>MZClient -v -p "_http._tcp 80 mysimpleweb” 

*** Registering name = 'mysimpleweb', type = '_http._tcp', domain = 'local.' 
*** Registered name = ‘mysimpleweb’ 

D'altro terminale:

c:\MZ>MZClient -v -t "_http._tcp" 
Creating a ServiceBrowser with the following settings: 
    Interface   = 0 (All) 
    Address Protocol = Any 
    Domain   = local 
    Registration Type = _http._tcp 
    Resolve Shares = False 

Hit ^C when you're bored waiting for responses. 

E questo è tutto. Non accade nulla. Naturalmente ho provato con diversi servizi senza successo. Anche giocato un po 'con quella cosa del dominio. Ricorda che questa è la stessa scatola. Ho provato su un altro computer, perché questa era una VM all'interno di OSX, quindi sono andato avanti e ho provato un XP "puro". Niente.

note: Dispongo del servizio Apple Bonjour (attivo e funzionante) e anche dell'SDK Apple (installato successivamente).

Dato che questo non ha funzionato, sono andato avanti e ho deciso di provare l'SDK di Apple che ha un Interop e alcuni campioni precompilati (e il suo codice sorgente).

Breve storia, né il mDSNBrowser.exe né il SimpleChat.exe funzionano/vedono/scoprono nulla.

La mia casella è una Win7 con Parallels, ma ciò non sembra influenzare nulla, dato che l'XP nativo mostra gli stessi problemi.

Cosa sto facendo così terribilmente sbagliato?

+0

Solo per correttezza, credo che il tipo di servizio dovrebbe terminare con un punto, quindi sarebbe "_http._tcp." – Thompsonian

+0

Ho avuto qualche problema con il motivo per cui non ha trovato nulla potrebbe essere il messaggio pump non funziona correttamente per il tuo mDSNBrowser.L'importante è anche quello che Azioni hai registrato. – Yoda

risposta

4

Ho usato Zeroconf NetServices per Zeroconf all'interno di .NET. Supponendo che tu autorizzi Bonjour attraverso il tuo firewall e che il tuo hardware di rete consenta il multicast, il problema più grande è sempre stata l'inaffidabilità del servizio Apple Bonjour. Il codice funzionante di routine non funzionerebbe, con la soluzione di riavviare il servizio Bonjour. Quindi, controlla l'hardware di rete, controlla il firewall, ma alla fine riavvia Bonjour alcune volte. Non funziona sempre al primo, al secondo o al terzo tentativo, ecc.

+0

Grazie Matthew, ho provato e sono riuscito a guarda le sessioni "SimpleChat" create con Apple Sample dal MZClient della riga di comando.Ho modificato SimpleChat per usare http tcp e p2pchat udp e posso vedere le sessioni. Continuerò a investigare. Quello che sembra non funzionare sono sessioni create * con * mzclient (che non mi interessa davvero) –

Problemi correlati