6

我正在尝试在http://www.mono-project.com/Mono.Zeroconf测试 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 找到我的注册服务。

谢谢!

4

5 回答 5

7

我还尝试使用Mono.Zeroconf项目页面提供的二进制文件并从源代码构建库以在 Windows 上使用,但无法发布其他客户端可找到的服务。我尝试了网站上的示例代码和提供的 MZClient。

经过一番挖掘,我发现了一个使用 Mono.Zeroconf 库的项目。通过使用在 Google Code 中签入Growl for Windows项目的二进制文件(这似乎是最新版本 0.9.0),我能够成功地发布带有示例代码和 MZClient 的可查找服务。

因此,一个明显的解决方法是从该项目中获取二进制文件(Mono.Zeroconf 和 Mono.Zeroconf.Providers.Bonjour)并使用它们而不是项目提供的那些。

于 2009-11-29T21:54:29.670 回答
3

mono-project.com/Mono.Zeroconf 上的二进制文件已过期,但仍包含导致此问题的代码。最新代码(包含所有修复程序)位于此链接 ,但需要您自己编译代码。

于 2012-08-06T16:58:33.517 回答
2

从以下链接更新源后重新编译解决了该问题

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

于 2012-12-14T04:31:58.003 回答
2

我也无法发布服务。我查看了代码,发现 UPort 设置器 Service.cs 中有一个错误:

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

它应该是

this.port = (ushort) IPAddress.HostToNetworkOrder((short) value);
于 2010-04-10T22:34:32.797 回答
1

他正在使用 mzclient 来测试上面的 Mono.Zeroconf 代码。Mono.Zeroconf 的全部意义在于提供跨平台、多个 mDNS 提供商支持(Avahi 和 Bonjour)。

EntryGroup DBus Avahi API 似乎存在问题,我正在 Mono.Zeroconf 中对其进行调查。我将在此处发布解决方案,并在我发现问题后发布新的 Mono.Zeroconf 版本(我是该项目的维护者)。

于 2009-03-30T18:33:34.383 回答