2009-03-01 20 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

彼は上記のMono.Zeroconfコードをテストするためにmzclientを使用しています。 Mono.Zeroconfの全ポイントは、クロスプラットフォーム、複数のmDNSプロバイダのサポート(AvahiとBonjour)を提供することです。

EntryGroup DBus Avahi APIに問題があり、Mono.Zeroconfで調べています。ここで解決策を投稿し、問題を突き止める際に新しいMono.Zeroconfリリース(私はプロジェクトのメンテナーです)を作ります。

+2

私は同じ問題を持っているを解決しました。それ以来ほぼ2年。すべてのアップデート? – Marek

6

Mono.Zeroconfプロジェクトページで提供されているバイナリを使用して、Windows用のソースからlibsをビルドし、他のクライアントが見つけたサービスを公開できませんでした。私はサイト上のサンプルコードと提供されたMZClientの両方を試しました。

もう少し掘り下げた後、私はMono.Zeroconfライブラリに慣れたプロジェクトを見つけました。 Google Codeの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

+0

コンパイルされていますか7年前のDLLは現在のDLLですか? – ScottN

2

サービスを公開することができませんでした。私はコードを見て、バグがService.cs、UPortセッターであり:

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

それはmono-project.com/Mono.Zeroconfで

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

これは誤解を招くもので、int変換へのushortはオーバーフローできません。 – Marek

3

バイナリが出ているべきですこの問題を引き起こすコードが含まれています。最新のコード(すべての修正を含む)はthis link にありますが、コードを自分でコンパイルする必要があります。次のリンクからソースを更新した後、再コンパイル

1
+1

リンクのみの回答は、スタックオーバーフローを歓迎しません。 – hims056

+1

申し訳ありませんが、リンク先のコメントはすべて私が言ったかった.. –

+0

@ hims056修正がリンクから提供されたソースからコンパイルされているときは、それは確かです... – zezba9000

関連する問題