【问题标题】:Python Library/Framework for writing P2P applications [closed]用于编写 P2P 应用程序的 Python 库/框架 [关闭]
【发布时间】:2010-11-01 02:07:43
【问题描述】:

是否有任何库或框架可以用 Python 编写 P2P 应用程序?

我知道最初的 Bittorrent 客户端是用 Python 编写的。我正在寻找类似于 JXTA 的东西,但对于 Python。

【问题讨论】:

    标签: python networking p2p jxta


    【解决方案1】:

    Twisted 几乎可以解决 Python 中任何与网络相关的问题,但您确实必须接受 Twisted 的做事方式。它本质上不是 P2P 堆栈,而是事件循环、回调系统和网络框架。

    Divmod Vertex 目前没有得到维护,几年前我尝试使用它时仍然很粗糙。

    CSpace 可能与您正在寻找的最接近:“一个用于通过 Internet 进行安全、分散、用户对用户通信的平台。”它将 P2P 和 NAT 遍历抽象出来,因此您的应用可以正常运行,而不是“P2P 应用”。

    同样,几年前澳大利亚有一个名为“The Circle”的旧 P2P 系统,完全用 Python 编写,具有安全的 P2P 消息传递、聊天、文件共享和其他功能。 0.41c 是最后一个版本:http://savannah.nongnu.org/projects/circle/

    也来自我的书签:

    http://entangled.sourceforge.net/ 是 Entangled,“基于 Kademlia 的分布式哈希表 (DHT),以及对等的元组空间实现。”

    http://khashmir.sourceforge.net/ 是一个 Python 分布式哈希表,值得注意的是它使用 Airhook 协议进行联网,该协议具有很强的容错性(设计用于例如蜂窝网络)。

    http://kenosis.sourceforge.net/ 是一个 Python P2P RPC 系统。

    【讨论】:

    • Divmod Vertex 最近进行了一些维护。您现在可以在 github.org/twisted/vertex 找到它
    • @Jean-Paul Calderone 是 Vertex 的 p2p 应用程序的工作框架,还是仅在理论上?该文档更多地关注哲学而不是实际指导。
    【解决方案2】:

    我能想到的最佳选择当然是使用twisted

    Old version of BitTorrent 是用它构建的。该链接指向使用扭曲的最后一个已知版本。您可以将其作为起点进行研究。

    还有Vertex。这是一个使用twisted并允许p2p绕过防火墙的库。

    【讨论】:

    • 看起来顶点链接现在无效
    • @tdi 是的,不幸的是 divmod 服务器遇到了一些硬件问题并且没有镜像。我可以在 launchpad.net/divmod 找到 Vertex 源代码,但不是我之前链接的文档。如果你能找到一个新的 Vertex 文档 url 指向,请告诉我,我会更新答案。谢谢。
    【解决方案3】:

    自从提出这个问题并随后得到了回答,ZeroMQ 出现了,我真的很喜欢它。 Python 模块称为 pyzmq。它使构建 TCP 套接字的过程变得不那么笨重,尤其是在处理请求>响应以外的消息模式时,尽管它也这样做。它非常适合基本服务器、p2p 应用程序、消息传递、分布式处理,应有尽有。

    【讨论】:

      【解决方案4】:

      我不知道这样的事情是否存在,但我可以提供以下替代方案:

      【讨论】:

      • 感谢您的回答。但目前我绝对需要 CPython。现在使用 JXTA-C 似乎太复杂了
      【解决方案5】:

      我引用 the Sun JXTA pages 的日期,日期为 2002 年 12 月,

      “JXTA 项目有一个 Java 参考实现,可从 download.jxta.org 获得,目前正在努力添加其他常用语言的参考实现,包括 C、Objective C、Perl、Ruby 和 Python。虽然 Java 实现是作为 JXTA 协议最完整的实现,C 实现(适用于 Win32 和 Linux)正在快速接近相同的完整性水平。”

      【讨论】:

      • 很遗憾,Python 的实现远未完成
      【解决方案6】:

      您好(来自 JXTA for Java 2.6 和 2.7 最后两个版本的领导者),

      在 Python 中没有已知的 JXTA 实现。

      如果有人想解决这个问题,首先应该了解 JXTA 2.0 协议。可在 Scribd 在线阅读的实用 JXTA II 书籍应该有助于理解该技术。

      加油!

      【讨论】:

        【解决方案7】:

        Stackless Python 您可能会感兴趣。

        【讨论】:

        • 我不确定这与 P2P 应用程序有什么关系?
        猜你喜欢
        • 2023-03-03
        • 2013-03-05
        • 1970-01-01
        • 2012-01-21
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多