在python中创建两台计算机之间的连接

12 python networking

问题:如何创建一个python应用程序,可以通过Internet连接和发送数据包到运行相同应用程序的另一台计算机?我可以使用现有的代码/库吗?

背景:我对编程很新(HS高级).我在python中创建了很多简单的东西,但我最近决定开始一个更大的项目.我正在考虑创建一个魔法:收集助推器模拟器草案,但我不知道,如果它给我的技能,所以我到处打听我开始之前是可行的.应用程序需要在计算机之间发送有关正在挑选/传递哪些卡的数据.

谢谢!

nos*_*klo 13

Twisted是一个在MIT下获得许可的python事件驱动的网络引擎.意味着单个机器可以与一个或多个其他机器通信,同时在接收和发送的数据之间执行其他操作,所有这些都是异步的,并且在单个线程/进程中运行.

它支持许多开箱即用的协议,因此您也可以使用现有协议.这是更好的,因为你从第三方软件获得对协议的支持(即使用HTTP进行通信意味着使用HTTP的中间件软件将兼容:代理等)

如果这就是你想要的,它也可以很容易地创建自己的通信协议.

文档充满例子.


Dan*_*man 7

标准库包括SocketServer(此处记录),可能会执行您想要的操作.

但是我想知道更好的解决方案是否可以使用消息队列.已经存在许多好的实现,包括Python接口.我以前用过RabbitMQ.这个想法是计算机都订阅队列,并可以发布或监听事件.


Dou*_*oug 5

开始寻找的好地方是Python 标准库。特别是有几个部分是相关的:

既然你提到你没有这方面的经验,我建议从基于 HTTP 的实现开始。在HTTP协议是相当简单的,易于使用的工作。此外,也有很好的框架,以支持此操作,如webpy服务器和httplib的来自客户端的标准库。

如果您真的想深入研究网络,那么基于套接字的实现可能具有教育意义。这将教你在大量网络代码中使用的基本概念,同时产生一个类似于文件流的接口。

  • @nosklo 我的回答不是针对任何编写生产代码的人,而是针对那些希望学习一些东西的人。显然,学习相同的概念有不同的方法。我承认从套接字接口开始并不是获取工作代码的最快方法,也可能不是健壮/稳定系统的最佳选择。然而,我坚持我的观点,学习如何使用套接字接口是有价值的知识。 (2认同)