2010-04-29 9 views
7

Ich habe eine iPhone App, die Bonjour veröffentlicht. Das Mac-Gegenstück funktioniert, sie synchronisieren und tauschen Daten aus. Jetzt muss ich diese kleine Mac-App auf Windows portieren. Ich habe mich entschieden, mit .NET zu gehen (weil das ist, was ich weiß).Mit Apples Bonjour-Service von .NET?

Die App ist nicht komplex, aber ich bin in den frühen Phasen. Ich muss Bonjour Dienste durchsuchen/entdecken. Für diese Aufgabe habe ich Mono.Zeroconf und Apples neuestes SDK (das ein paar C# -Proben enthält) heruntergeladen.

Ich bin nicht wirklich Einfügen von Code, weil ich wirklich die Proben kopieren/einfügen. In der Tat hat Mono.Zeroconf eine MZClient.exe, die verwendet werden kann, um "die gesamte API" zu testen.

Mein erster Test war - auf der gleichen Box - öffnen Sie zwei cmd.exe und starten Sie einen MZclient registrieren einen Dienst und auf der anderen, starten Sie es und "entdecken Sie es".

Es funktioniert nicht.

Hier ist der Server:

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

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

Auf der anderen Terminal:

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. 

Und das ist es. Nichts passiert. Ich habe natürlich mit verschiedenen Diensten vergebens versucht. Habe sogar ein bisschen mit dieser Domain gespielt. Denken Sie daran, dies ist die gleiche Box. Ich habe es auf einem anderen Computer versucht, da dies eine VM innerhalb von OSX war, also ging ich weiter und probierte eine "reine" Win XP aus. Nichts.

Hinweis: Ich habe Apple Bonjour Service (up und läuft) und auch das Apple SDK (später installiert).

Da dies nicht funktionierte, entschied ich mich, das Apple SDK auszuprobieren, das ein Interop und ein paar vorkompilierte Samples (und seinen Quellcode) hat.

Kurzgeschichte, weder die mDSNBrowser.exe noch die SimpleChat.exe arbeiten/sehen/entdecken nichts.

Meine Box ist ein Win7 unter Parallels, aber das scheint nichts zu beeinflussen, da das native XP die gleichen Probleme aufweist.

Was mache ich so furchtbar falsch?

+0

Gerade für die Richtigkeit, glaube ich, der Service-Typ mit einem Punkt enden sollte, so wäre es „_http._tcp sein." – Thompsonian

+0

Ich hatte einige Probleme damit. Der Grund, warum es nichts gefunden hat, könnte Message Pump nicht richtig für Ihren mDSNBrowser. Das Wichtige ist auch, was Aktionen haben Sie registriert. – Yoda

Antwort

4

Ich habe Zeroconf NetServices für Zeroconf innerhalb von .NET verwendet. Angenommen, Sie erlauben Bonjour durch Ihre Firewall und Ihre Netzwerk-Hardware ermöglicht Multicast, das größte Problem war immer die Unzuverlässigkeit des Apple Bonjour-Dienstes. Routinemäßig funktionierender Code würde fehlschlagen, mit der Lösung, den Bonjour-Dienst neu zu starten. Überprüfen Sie also Ihre Netzwerkhardware, überprüfen Sie Ihre Firewall, aber starten Sie Bonjour schließlich einige Male neu. Es funktioniert nicht immer auf der ersten, zweiten oder dritten Versuch, etc.

+0

Dank Matthew, ich habe es versucht und geschafft Siehe die "SimpleChat" -Sitzungen, die mit dem Apple-Beispiel aus dem MZClient der Befehlszeile erstellt wurden. Ich habe SimpleChat geändert, um http tcp und p2pchat udp zu verwenden, und ich kann die Sitzungen sehen. Ich werde weiter nachforschen. Es scheint nicht zu funktionieren Sitzungen erstellt * mit * mzclient (was mir wirklich egal ist) –

Verwandte Themen