2009-03-01 15 views
5

Sto provando a testare il campione ZeroConf su http://www.mono-project.com/Mono.Zeroconf.Come registrare un servizio con Mono.ZeroConf?

Sto eseguendo OpenSuse 11 e Mono 2.2.

Il mio codice del server è:

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(); 
     } 
    } 
} 

Ma non riesco a trovare il mio registrato con il codice di browser client campione né con mzclient.

Grazie!

risposta

1

Sta usando mzclient per testare il suo codice Mono.Zeroconf sopra. L'intero punto di Mono.Zeroconf è quello di fornire una piattaforma multipiattaforma, più supporto per i provider mDNS (Avahi e Bonjour).

Sembra esserci un problema con l'API DBus Avahi di EntryGroup e lo sto esaminando in Mono.Zeroconf. Pubblicherò una soluzione qui, così come farò una nuova versione di Mono.Zeroconf (sono il manutentore del progetto) quando scoprirò il problema.

+2

Ho lo stesso problema. Quasi 2 anni da allora. Qualsiasi aggiornamento? – Marek

6

Ho anche provato a utilizzare i file binari forniti nella pagina del progetto Mono.Zeroconf e creare le librerie dal sorgente per l'utilizzo su Windows e non è stato in grado di pubblicare un servizio che era disponibile per altri client. Ho provato sia il codice di esempio sul sito che il MZClient fornito.

Dopo aver scavato un po 'di più ho trovato un progetto che usava le librerie Mono.Zeroconf. Utilizzando i binari selezionati nel progetto Growl for Windows su Google Code (che sembra essere l'ultima versione 0.9.0) sono riuscito a pubblicare un servizio trovabile con sia il codice di esempio che MZClient.

Quindi un lavoro apparente sarebbe quello di prendere i binari (Mono.Zeroconf e Mono.Zeroconf.Providers.Bonjour) da quel progetto e utilizzare quelli invece di quelli forniti dal progetto.

+1

Per chi lo cerca, puoi trovare i file DLL qui: https://github.com/briandunnington/growl-for-windows/tree/master/Growl/Growl.Daemon/Third%20Party%20Assemblies – twig

+0

Sono compilati DLL da 7 anni fa corrente? – ScottN

2

Non sono riuscito nemmeno a pubblicare un servizio. Ho guardato attraverso il codice e c'è un bug nel Service.cs, il setter UPort:

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

Va

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

questo è fuorviante, la conversione da ushort a int non può overflow – Marek

3

I binari a mono-project.com/Mono.Zeroconf sono fuori di data e contengono ancora il codice che causa questo problema. Il codice più recente (con tutte le correzioni) è this link ma richiede di compilare il codice da solo.

1

Ricompilazione dopo l'aggiornamento la fonte dal seguente link risolto il problema

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

+1

Le uniche risposte di collegamento non sono i benvenuti a Stack Overflow. – hims056

+1

Scusa..ma il commento prima che il collegamento fosse tutto ciò che volevo dire .. –

+0

@ hims056 quando la correzione si sta compilando dalla fonte fornita dal collegamento, di certo è ... – zezba9000

Problemi correlati