2009-03-01 110 views
5

我試圖在http://www.mono-project.com/Mono.Zeroconf測試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)。

EntryGroup DBus Avahi API似乎有問題,我正在Mono.Zeroconf中查看它。我會在這裏發佈一個解決方案,以及在找出問題時製作一個新的Mono.Zeroconf發行版(我是該項目的維護者)。

+2

我有同樣的問題。此後近2年。任何更新? – Marek 2011-03-25 09:07:20

6

我也嘗試使用Mono.Zeroconf項目頁面上提供的二進制文件,並在源代碼中構建用於Windows的庫並且無法發佈其他客戶端可以找到的服務。我嘗試了網站上的示例代碼和提供的MZClient。

經過多一點挖掘,我找到了一個用於Mono.Zeroconf庫的項目。通過在谷歌代碼中使用登錄到Growl for Windows項目的二進制文件(似乎是最新版本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 2015-07-19 11:44:48

+0

是編譯來自7年前的DLL當前? – ScottN 2016-05-09 18:16:52

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 2011-03-25 09:18:35

3

在mono-project.com/Mono.Zeroconf的二進制文件都出來了的日期,並仍包含導致此問題的代碼。最新的代碼(包含所有修補程序)位於this link 但您需要自己編譯代碼。