3

我正在为 Direct Connect P2P 网络编写 Python 客户端。本质上,它通过连接到中央服务器并响应正在搜索文件的其他用户来工作。

有时,另一个客户会要求我们连接到他们,他们可能会开始从我们这里下载文件。这是与其他客户端的直接连接,不通过中央服务器。

处理这些与其他客户端的连接的最佳方式是什么?我目前正在使用一个 Twisted 反应器连接到服务器,但是最好有多个反应器,每个客户端一个,每个反应器在不同的线程中运行?还是有一个完全独立的 Python 脚本来执行与客户端的连接会更好?

如果还有其他我不知道的解决方案,我很想听听。我是使用 Twisted 编程的新手,所以我愿意接受建议和其他资源。

谢谢!

4

1 回答 1

3

在不了解协议的所有细节的情况下,我仍然建议使用单个反应器 - 反应器可以很好地扩展尤其是高级的,例如PollReactor),这样您将避免与线程相关的开销(这就是 Twisted 和其他异步系统的方式毕竟,通过避免这种开销来获得它们的基本性能提升)。在实践中,Twisted 中的线程主要在您需要连接到一个函数可能会阻塞您的库时很有用。

于 2009-12-07T00:31:37.590 回答