2009-03-01 5 views
5

Ich versuche das ZeroConf-Beispiel unter http://www.mono-project.com/Mono.Zeroconf zu testen.Wie registriere ich einen Service mit Mono.ZeroConf?

Ich laufe OpenSuse 11 und Mono 2.2.

Mein Server-Code ist:

using System; 
using Mono.Zeroconf; 

namespace zeroconftestserver 
{ 
    class MainClass 
    { 
     public static void Main(string[] args) 
     { 
      RegisterService service = new RegisterService(); 
      service.Name = "test server"; 
      service.RegType = "_daap._tcp"; 
      service.ReplyDomain = "local."; 
      service.Port = 6060; 

      // TxtRecords are optional 
      TxtRecord txt_record = new TxtRecord(); 
      txt_record.Add ("Password", "false"); 
      service.TxtRecord = txt_record; 

      service.Register(); 
      Console.WriteLine("Service registered!"); 
      Console.ReadLine(); 
     } 
    } 
} 

Aber ich kann nicht meinen registrierten Dienst mit der Probe Client-Browser-Code noch mit mzclient finden.

Dank!

Antwort

1

Er verwendet mzclient, um seinen Mono.Zeroconf-Code oben zu testen. Der ganze Sinn von Mono.Zeroconf ist die Bereitstellung plattformübergreifender, multipler mDNS-Provider-Unterstützung (Avahi und Bonjour).

Es scheint ein Problem mit der EntryGroup DBus Avahi API zu geben, und ich schaue es in Mono.Zeroconf. Ich poste hier eine Lösung und mache eine neue Mono.Zeroconf-Version (ich bin die Betreuerin des Projekts), wenn ich das Problem herausfinde.

+2

Ich habe das gleiche Problem. Fast 2 Jahre seitdem. Irgendein Update? – Marek

6

Ich habe auch versucht, die Binärdateien auf der Projektseite Mono.Zeroconf zu verwenden und die Bibliotheken aus der Quelle für die Verwendung unter Windows zu erstellen und konnte einen Dienst nicht veröffentlichen, der von anderen Clients gefunden werden konnte. Ich habe sowohl den Beispielcode auf der Seite als auch den MZClient ausprobiert.

Nach ein wenig mehr Graben habe ich ein Projekt gefunden, das an die Mono.Zeroconf-Bibliotheken gewöhnt ist. Durch die Verwendung der Binärdateien, die in das Projekt Growl for Windows bei Google Code eingecheckt wurden (anscheinend die neueste Version 0.9.0), konnte ich einen auffindbaren Dienst mit dem Beispielcode und MZClient erfolgreich veröffentlichen.

So eine scheinbare Arbeit wäre, die Binärdateien (Mono.Zeroconf und Mono.Zeroconf.Providers.Bonjour) von diesem Projekt zu greifen und diese anstelle der vom Projekt bereitgestellten zu verwenden.

+1

Für diejenigen, die danach suchen, können Sie die DLL-Dateien hier finden: https://github.com/briandnington/growl-for-windows/tree/master/Growl/Growl.Daemon/Third%20Party%20Assemblies – twig

+0

Sind die kompilierten DLLs von vor 7 Jahren aktuell? – ScottN

2

Ich konnte einen Dienst auch nicht veröffentlichen. Ich sah den Code durch, und es ist ein Fehler in Service.cs, die Setter UPort:

this.port = (ushort) IPAddress.HostToNetworkOrder((int) value); //overflow, port is always 0 

Es sollte

this.port = (ushort) IPAddress.HostToNetworkOrder((short) value); 
+0

Dies ist irreführend, ushort to int Umwandlung kann nicht überlaufen – Marek

3

Die Binärdateien auf mono-project.com/Mono.Zeroconf sind out von Datum und enthalten immer noch Code, der dieses Problem verursacht. Der neueste Code (mit allen Korrekturen) ist unter this link , aber Sie müssen den Code selbst kompilieren.

1

neu zu kompilieren, nachdem die Quelle, aus dem folgenden Link Aktualisierung löste das Problem

https://github.com/mono/Mono.Zeroconf/tree/master/src

+1

Link nur Antworten sind nicht willkommen zu Stack Overflow. – hims056

+1

Sorry..aber der Kommentar vor dem Link war alles, was ich sagen wollte .. –

+0

@ hims056, wenn das Update von der Quelle durch den Link zur Verfügung gestellt wird, ist es sicher ... – zezba9000