我的应用程序打开一个TCP套接字,并使用同一个应用程序等待网络上其他用户的数据。同时,它可以将数据广播到网络上的指定主机。
目前,我需要手动输入目标主机的IP才能发送数据。我希望能够找到运行该应用程序的所有主机的列表,并让用户选择将数据广播到哪个主机。
Bonjour / ZeroConf是完成此任务的正确途径吗? (我希望它能跨平台OSX / Win / * Nix)
答案 0 :(得分:2)
在这种情况下,Zeroconf / DNS-SD是一个很好的主意。它由Bonjour在OS X和Windows上提供(但必须单独安装或作为Windows产品的一部分安装在Windows上),并由Avahi在FOSS * nix上提供。
答案 1 :(得分:2)
它可以将数据广播到网络上的指定主机
这是一个不引用的问题。
我认为你实际上并不是指广播,你的意思是Unicast或只是“发送”?
Bonjour / ZeroConf是完成此任务的正确途径吗?
这实际上取决于您的目标环境以及您的应用程序要执行的操作。
正如Ignacio指出的那样,您需要在Windows上安装Apple软件,以便Zeroconf / mDNS立即工作。
这可能适合小型办公室/家庭使用。
但是,由于各种原因,较大的网络可能会禁用第2层多播,此时您的应用可能会出现问题。
如果您希望它在企业环境中工作,则需要进行一些配置,但不必在边缘(在应用程序客户端实例中)完成。
可以通过DHCP选项或DNS服务记录..在这些情况下,您可能正在编写可查询服务器来跟踪活动客户端..就像BitTorrent跟踪器一样。
设计联网应用时需要考虑两件事:
答案 2 :(得分:0)
我认为ZeroConf是一个非常好的开始。您可能会发现this document有用。
答案 3 :(得分:0)
我在网页上有一个列表,如果您需要互联网通信,那就太好了。
<dl_service updated="2010-12-03 11:55:40+01:00">
<client name="internal" ip="10.0.23.234" external_ip="1.1.1.1"/>
<client name="bigone" ip="2.2.2.2" external_ip="2.2.2.2">
<messsage type="connect" from="Bigone" to="internal" />
</client>
</dl_service>
我最初的想法是添加防火墙冲击和所有这些,但我不能打扰太多使用外部IP的主机,因为它是一个问题..
但我真的推荐Zeroconf,至少如果你使用Linux + MacOSX,根本不了解Windows。