用Python创建两台计算机之间的连接

13 投票
6 回答
27579 浏览
提问于 2025-04-15 11:58

问题是:我该如何创建一个Python应用程序,让它能通过互联网连接到另一台运行相同应用程序的电脑,并发送数据包?有没有现成的代码或库可以使用?

背景:我对编程还很陌生(高中最后一年)。我用Python做过很多简单的项目,但最近决定开始一个更大的项目。我在考虑制作一个《万智牌》抽卡模拟器,但不确定我的技能是否足够,所以在动手之前想先问问大家。这个应用程序需要在电脑之间发送关于哪些卡片被选中或放弃的数据。

谢谢!

6 个回答

5

一个很好的起点是查看 Python标准库。特别是有几个部分会对你有帮助:

因为你提到你对此没有经验,我建议你从基于HTTP的实现开始。HTTP协议相对简单,容易上手。此外,还有一些不错的框架可以支持这个操作,比如服务器端的 webpy 和标准库中的客户端 HTTPLib

如果你真的想深入了解网络编程,那么基于 socket 的实现可能会很有教育意义。这将教会你很多网络代码背后的基本概念,同时也会让你接触到类似文件流的接口。

7

标准库里有一个叫做SocketServer的东西(详细信息可以在这里找到),它可能能满足你的需求。

不过我在想,使用消息队列可能是个更好的解决方案。现在有很多不错的实现方式,包括Python的接口。我之前用过RabbitMQ。这个想法是,两个电脑都可以订阅这个队列,它们可以发布消息或者监听事件。

15

Twisted 是一个基于事件驱动的网络引擎,使用 Python 编写,并且是 MIT 许可证的。这意味着一台机器可以和一台或多台其他机器进行通信,同时在发送和接收数据的过程中可以做其他事情,所有这些都是异步进行的,并且只在一个线程或进程中运行。

它自带支持很多协议,所以你可以直接使用现有的协议。这种方式更好,因为这样你可以得到第三方软件对这些协议的支持(比如,使用 HTTP 进行通信意味着使用 HTTP 的中间件软件(如代理)也能兼容)。

如果你想的话,它也很容易让你创建自己的通信协议。

文档里有很多例子。

撰写回答