2009-03-01 12 views
5

Estoy tratando de probar la muestra de ZeroConf en http://www.mono-project.com/Mono.Zeroconf.¿Cómo registrar un servicio con Mono.ZeroConf?

Estoy ejecutando OpenSuse 11 y Mono 2.2.

Mi código del servidor es:

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

Pero no puedo encontrar mi servicio registrada con el código del navegador cliente de ejemplo ni con mzclient.

Gracias!

Respuesta

1

Él está usando mzclient para probar su código Mono.Zeroconf arriba. Todo el objetivo de Mono.Zeroconf es proporcionar soporte multiplataforma, múltiples proveedores de mDNS (Avahi y Bonjour).

Parece haber un problema con EntryGroup DBus Avahi API y lo estoy buscando en Mono.Zeroconf. Voy a publicar una solución aquí, así como a hacer una nueva versión Mono.Zeroconf (soy el mantenedor del proyecto) cuando descubro el problema.

+2

tengo el mismo problema. Casi 2 años desde entonces. ¿Cualquier actualización? – Marek

6

También traté de usar los archivos binarios proporcionados en la página del proyecto Mono.Zeroconf y crear las libretas de la fuente para su uso en Windows y no pude publicar un servicio que fuera encontrado por otros clientes. Intenté tanto el código de ejemplo en el sitio como el MZClient proporcionado.

Después de un poco más de excavación encontré un proyecto que solía utilizar las librerías Mono.Zeroconf. Al utilizar los binarios registrados en el proyecto Growl for Windows en Google Code (que parece ser la última versión 0.9.0) pude publicar con éxito un servicio que se puede encontrar tanto con el código de muestra como con MZClient.

Por lo tanto, una solución obvia sería tomar los binarios (Mono.Zeroconf y Mono.Zeroconf.Providers.Bonjour) de ese proyecto y usarlos en lugar de los proporcionados por el proyecto.

+1

Para quienes lo buscan, puede encontrar los archivos DLL aquí: https://github.com/briandunnington/growl-for-windows/tree/master/Growl/Growl.Daemon/Third%20Party%20Assemblies – twig

+0

¿Están compilados? DLLs de hace 7 años actual? – ScottN

2

No pude obtener un servicio publicado tampoco. Miré a través del código y no hay un error en Service.cs, el colocador UPort:

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

Cabe

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

esto es engañoso, la conversión de ushort a int no puede desbordar – Marek

3

Los binarios en mono-project.com/Mono.Zeroconf están fuera de fecha y aún contiene el código que causa este problema. El código más reciente (con todas las correcciones) está en this link , pero es necesario que compile el código usted mismo.

1

Recompilando después de actualizar la fuente desde el siguiente enlace resuelto el problema

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

+1

Las respuestas de enlace único no son bienvenidas a Stack Overflow. – hims056

+1

Lo siento ... pero el comentario antes del enlace era todo lo que quería decir ... –

+0

@ hims056 cuando la solución se compila desde la fuente proporcionada por el enlace, seguro que ... – zezba9000

Cuestiones relacionadas