2009-03-01 5 views
5

Я пытаюсь проверить образец ZeroConf на http://www.mono-project.com/Mono.Zeroconf.Как зарегистрировать услугу с помощью Mono.ZeroConf?

Я бегу OpenSuse 11 и Mono 2.2.

Мой код сервера:

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

Но я не могу найти свой зарегистрированный сервис с кодом браузера образец клиента, ни с mzclient.

Спасибо!

ответ

1

Он использует mzclient, чтобы проверить его Mono.Zeroconf код, указанный выше. Весь момент Mono.Zeroconf заключается в предоставлении кросс-платформенной поддержки нескольких провайдеров mDNS (Avahi и Bonjour).

Там, как представляется, проблема с API EntryGroup DBus Avahi, и я смотрю на него в Mono.Zeroconf. Я опубликую решение здесь, а также сделаю новый выпуск Mono.Zeroconf (я сторонник проекта), когда я выясню проблему.

+2

У меня есть один и тот же вопрос. Почти 2 года с тех пор. Любое обновление? – Marek

6

Я также попытался использовать двоичные файлы, предоставленные на странице проекта Mono.Zeroconf, и создать библиотеки из источника для использования в Windows и не смог опубликовать службу, которую могли найти другие клиенты. Я попробовал как пример кода на сайте, так и предоставленный MZClient.

После немного больше копания я нашел проект, который используется для LIBS Mono.Zeroconf. Используя двоичные файлы, проверенные в проекте Growl for Windows в Google Code (который, как представляется, является последней версией 0.9.0), я смог успешно опубликовать найденную услугу как с образцом кода, так и с MZClient.

Таким образом, очевидная работа заключалась в том, чтобы захватить двоичные файлы (Mono.Zeroconf и Mono.Zeroconf.Providers.Bonjour) из этого проекта и использовать их вместо тех, которые предоставляются проектом.

+1

Для тех, кто ищет его, вы можете найти DLL файлы здесь: https://github.com/briandunnington/growl-for-windows/tree/master/Growl/Growl.Daemon/Third%20Party%20Assemblies – twig

+0

ли скомпилированный DLLs от 7 лет назад текущий? – ScottN

2

я не смог получить услугу опубликования либо. Я просмотрел код и есть ошибка в Service.cs, то UPort сеттер:

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

Это должно быть

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

Это вводит в заблуждение, ushort для преобразования int не может переполняться – Marek

3

двоичные файлы в mono-project.com/Mono.Zeroconf вне даты и все еще содержат код, который вызывает эту проблему. Самый последний код (со всеми исправлениями) находится на this link , но вам нужно самому скомпилировать код.

1

Пересобирает после обновления источника по следующей ссылке решается вопрос

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

+1

Ссылка только ответы не могут быть переполнены стеком. – hims056

+1

Извините .. но комментарий перед ссылкой был все, что я хотел сказать .. –

+0

@ hims056, когда исправление компилируется из источника, предоставленного ссылкой, это обязательно ... – zezba9000

Смежные вопросы