代码之家  ›  专栏  ›  技术社区  ›  Martin Marconcini

使用来自.NET的Apple Bonjour服务?

  •  7
  • Martin Marconcini  · 技术社区  · 14 年前

    我有一个iPhone应用程序可以通过Bonjour发布。mac对应物工作,它们同步和交换数据。现在我必须把那个小Mac应用程序移植到Windows上。我决定使用.NET(因为我知道它)。

    这个应用程序并不复杂,但我还处于早期阶段。我需要浏览/发现Bonjour服务。对于这个任务,我下载了mono.zeroconf和apples最新的sdk(其中包括几个c示例)。

    我不是真的在粘贴代码,因为我真的在复制/粘贴示例。实际上,mono.zeroconf有一个mzclient.exe,可以用来测试所有API。

    我的第一个测试是-在同一个框中-打开两个cmd.exe并启动一个注册服务的mzclient,在另一个框中,启动它并发现它。

    它不起作用。

    服务器在这里:

    C:\MZ>MZClient -v -p "_http._tcp 80 mysimpleweb”
    
    *** Registering name = 'mysimpleweb', type = '_http._tcp', domain = 'local.'
    *** Registered name = ‘mysimpleweb’
    

    在另一个终端上:

    c:\MZ>MZClient -v -t "_http._tcp"
    Creating a ServiceBrowser with the following settings:
      Interface         = 0 (All)
      Address Protocol  = Any
      Domain            = local
      Registration Type = _http._tcp
      Resolve Shares    = False
    
    Hit ^C when you're bored waiting for responses.
    

    就这样。什么都没发生。当然,我尝试过不同的服务,但没有效果。甚至对那个领域的东西也玩了一点。记住这是同一个盒子。我在另一台计算机上尝试过,因为这是OSX内部的一个虚拟机,所以我继续尝试了一个纯粹的WinXP。没有什么。

    笔记 :我有Apple Bonjour服务(启动并运行)和Apple SDK(稍后安装)。

    考虑到这不起作用,我决定尝试一下Apple SDK,它有一个互操作和一些预编译的示例(及其源代码)。

    短篇小说,mdsnbrowser.exe和simplechat.exe都不工作/看/发现任何东西。

    我的盒子是一个并行的Win7,但考虑到本机XP也存在同样的问题,这似乎不会影响任何东西。

    我在做什么?我做错了什么?

    2 回复  |  直到 13 年前
        1
  •  4
  •   Matthew Ferreira    14 年前

    我在.NET中使用了zeroconf netservices作为zeroconf。假设您允许Bonjour通过防火墙,并且您的网络硬件允许多播,最大的问题始终是AppleBonjour服务的不可靠性。常规工作的代码将失败,解决方案是重新启动Bonjour服务。所以,检查你的网络硬件,检查你的防火墙,但最终重新启动Bonjour几次。它并不总是在第一次,第二次,或第三次尝试等工作。

        2
  •  1
  •   Community CDub    7 年前

    以下是一些重要的参考资料,如nuget版本、git中的源版本和growl windows下载。 目前 似乎所有的实现都略有不同。nuget包对我不起作用,所以我下载了源代码,进行了推荐的更改并重新编译。

    How to register a service with Mono.ZeroConf?

    http://bryanprice.info/2011/01/29/mono-zeroconf-on-windows/