是否有用于在Python中编写P2P应用程序的库或框架?
我知道最初的Bittorrent客户端是用Python编写的。我看起来像JXTA但是对于Python。
答案 0 :(得分:19)
Twisted几乎是Python中与网络相关的任何东西的答案,但你真的必须采用扭曲的做事方式。它本质上不是P2P堆栈,它是一个事件循环,回调系统和网络框架。
Divmod Vertex目前尚未维护,几年前我尝试使用它时仍然非常粗糙。
CSpace可能最接近您所寻找的内容:“通过互联网进行安全,分散,用户对用户通信的平台。”它抽象了P2P和NAT遍历,因此您的应用程序可以正常运行而不是“P2P应用程序”。
同样,几年前澳大利亚有一个旧的P2P系统称为“The Circle”,完全用Python编写,具有安全的P2P消息,聊天,文件共享和其他功能。 0.41c是最后一个版本:http://savannah.nongnu.org/projects/circle/
同样来自我的书签:
http://entangled.sourceforge.net/是纠缠的,“基于Kademlia的分布式哈希表(DHT),以及点对点元组空间实现。”
http://khashmir.sourceforge.net/是一个Python分布式哈希表,值得注意,因为它使用Airhook协议进行网络连接,该协议非常容错(设计用于例如蜂窝网络)。
http://kenosis.sourceforge.net/是一个Python P2P RPC系统。
答案 1 :(得分:4)
我认为最好的选择是使用twisted。
Old version of BitTorrent是用它构建的。链接是使用扭曲的上一个已知版本。你可以把它作为一个起点来研究。
还有Vertex。它是一个使用twisted的库,允许p2p与防火墙绕过。
答案 2 :(得分:3)
由于这个问题被提出并随后回答,ZeroMQ已经出现,我真的很喜欢它。 Python模块名为pyzmq。它使构建TCP套接字的过程变得不那么笨重,特别是在处理除Request> Respond之外的消息模式时,尽管它也是这样做的。它非常适合基本服务器,p2p应用程序,消息传递,分布式处理,你可以命名。
答案 3 :(得分:2)
我不知道是否存在这样的事情,尽管我可以提供以下替代方案:
答案 4 :(得分:0)
我引用了the Sun JXTA pages,其中有2002年12月的日期,
“Project JXTA有一个Java参考实现,可从download.jxta.org获得,目前正在使用其他常用语言添加参考实现,包括C,Objective C,Perl,Ruby和Python。虽然Java实现是作为JXTA协议最完整的实现,C实现(适用于Win32和Linux)快速接近完全相同的水平。“
答案 5 :(得分:0)
嗨(来自JXTA for Java 2.6和2.7的最后两个版本的领导者),
Python中没有已知的JXTA实现。
如果有人想解决这个问题,首先应该了解JXTA 2.0协议。可在线阅读Scribd的实用JXTA II书籍有助于理解该技术。
振作!
答案 6 :(得分:-3)
Stackless Python感兴趣。