python - 使用 Python 的 P2P 应用程序

标签 python python-2.7 implementation p2p

<分区>

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

下面是我的实现方式:

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

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

那么问题来了:

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

像我上面描述的那样创建一个 p2p 服务器是个好主意吗?

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

最佳答案

我不太确定项目要求是否需要 P2P 系统,但是...

P2P 系统没有单独的客户端和服务器应用程序,而是有一个既充当客户端又充当服务器的应用程序。从某种意义上说,应用程序充当客户端是因为它连接到服务器并且它充当服务器是因为它接受来自客户端的查询/命令。

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

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

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

关于python - 使用 Python 的 P2P 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30796598/

相关文章:

Python 打印 unicode 列表

python - 在Python中检查列表中的元素时循环

c# - 基于参数加载实现

php - 除了单例之外,在 PHP 中使用静态方法还有哪些令人信服的理由?

python - 关于如何编写好的 python 包装器 LSF 的建议

python - 如何在python中对集合进行排序?

python - workalendar.europe 图书馆 : how to find holidays

python - 如何在 Tkinter 中使用 curselection 表示没有选择任何内容

python - 从一个可迭代对象中一次产生多个对象?

php - 内联接口(interface)实现——在声明时实现接口(interface)方法