【问题标题】:A P2P application with Python [closed]使用 Python 的 P2P 应用程序 [关闭]
【发布时间】:2023-03-03 23:35:01
【问题描述】:

我正在尝试在我的项目中实现 P2P,但由于对 P2P 的误解而遇到了问题。

这是我的实现方式:

  1. 客户端打开程序,向服务器发送他要连接的程序,服务器将客户端加入等待列表。

  2. 当有两个以上的人连接到服务器时,服务器会向他们发送他们应该连接的地址,并将他们从列表中删除。

那么问题来了:

如何在一个文件中创建服务器和客户端?我应该创建两个线程 - 一个用于客户端,一个用于服务器吗?

如上所述创建 p2p 服务器是个好主意吗?

我没有在互联网上找到任何用 python 编写的示例。

【问题讨论】:

  • 客户端-服务器听起来与点对点冲突。无论如何,您需要广播同伴下落的“东西”。我建议为“某事”创建一个程序,该程序最有可能是具有发现主题的发布者-订阅者。然后是实际 p2p 进程的另一个程序。 p2p最有可能需要gevent、twisted、tornado等线程或并发库。让p2p实例订阅发现主题,并找到其他对等方。从那里两个同行握手,建立连接,做生意。
  • 目前,一些项目似乎只在 Python 中提供 P2P 库: Stalled: github.com/p2p-today/p2p-project Stalled: github.com/ethereum/pydevp2p Stalled: github.com/StorjOld/pyp2p Incomplete and WIP: github.com/libp2p/py-libp2p 所以我们可以看到有没有那么多选择。

标签: python python-2.7 implementation p2p


【解决方案1】:

我不确定 P2P 系统是否对于项目要求是必要的,但是...

P2P 系统没有单独的客户端和服务器应用程序,而是有一个单独的应用程序同时充当客户端和服务器。从某种意义上说,应用程序充当客户端是因为它可以访问服务器,它充当服务器是因为它接受来自客户端的查询/命令。

http://cs.berry.edu/~nhamid/p2p/framework-python.html 展示了如何在 Python 中构建一个简单的 p2p。此示例创建一个循环来接受传入的连接(其他对等方)并生成一个线程来处理传入的连接。它还具有将消息发送回记录的对等方的结构。

一个大问题是一个对等点如何定位其他对等点,这通常是通过第三方处理的,例如一个专用的“协调”/“引导”服务器,它可以将一个对等点指向至少另一个对等点(从那里可以向该同伴询问更多同伴)。考虑到您已经知道对等方将用于连接到另一个对等方的地址,您的项目可能不需要这样做。

参考上面的网站,您将创建一个处理函数并将其放置在 self.handlers 中。由于该函数将传递传入对等方的信息,因此您可以让应用程序发回您希望的数据(要连接的地址)

【讨论】:

    猜你喜欢
    • 2010-11-01
    • 2012-01-21
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多