【问题标题】:Proper way to publish and find services on a LAN using Python使用 Python 在 LAN 上发布和查找服务的正确方法
【发布时间】:2010-12-03 08:07:40
【问题描述】:

我的应用程序打开一个 TCP 套接字并等待来自网络上使用同一应用程序的其他用户的数据。同时,它可以向网络上的指定主机广播数据。

目前,我需要手动输入目标主机的 IP 才能发送数据。我希望能够找到运行应用程序的所有主机的列表,并让用户选择将数据广播到哪个主机。

Bonjour/ZeroConf 是实现这一目标的正确途径吗? (我希望它能够跨平台 OSX/Win/*Nix)

【问题讨论】:

    标签: python networking bonjour zeroconf


    【解决方案1】:

    它可以将数据广播到网络上的指定主机

    这是不合逻辑的。

    我假设您实际上并不是指广播,您的意思是 Unicast 还是只是“发送”?

    Bonjour/ZeroConf 是实现这一目标的正确途径吗?

    这实际上取决于您的目标环境以及您的应用程序打算做什么。

    正如 Ignacio 指出的那样,您现在需要在 Windows 上安装 Apple 软件,Zeroconf/mDNS 才能正常工作。

    这可能适合小型办公室/家庭使用。


    但是,较大的网络可能会由于各种原因禁用第 2 层多播,此时您的应用可能会遇到问题。

    如果您希望它在企业环境中工作,则需要进行一些配置,但不必在边缘(在应用客户端实例中)完成。

    可以通过 DHCP 选项,或通过 DNS 服务记录。在这些情况下,您可能会编写一个可查询的服务器来跟踪活动的客户端。很像 BitTorrent Tracker。

    在设计联网应用时需要考虑两件事:

    • 是否有理由在网络上运行多个“安装”应用程序?
    • 始终考虑版本控制的影响:一个客户端比另一个客户端更新,他们仍然可以相互通信或至少正常失败吗?

    【讨论】:

    • 对不起我的错误。我的意思是发送数据而不是广播。所有这些答案都非常有帮助,谢谢大家。
    • 那是矛盾的,不是不合逻辑的。一个不合逻辑的说法是“我想与一个特定的主持人交流,因此我必须向他们所有人广播”。
    【解决方案2】:

    Zeroconf/DNS-SD 在这种情况下是一个绝妙的主意。它由 Bonjour 在 OS X 和 Windows 上提供(但必须在 Windows 上单独安装或作为 Apple 产品的一部分安装),由 Avahi 在 FOSS *nix 上提供。

    【讨论】:

      【解决方案3】:

      我认为 ZeroConf 是一个很好的开始。您可能会发现this document 很有用。

      【讨论】:

        【解决方案4】:

        我在网页上有一个列表,如果您需要互联网通信,那就太好了。

        <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 完全不了解。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-21
          • 1970-01-01
          • 1970-01-01
          • 2013-03-06
          • 2012-07-13
          • 1970-01-01
          • 1970-01-01
          • 2015-01-30
          相关资源
          最近更新 更多