通过互联网与另一个Python程序通信

3
我需要制作一个可以在互联网上运行的象棋多人游戏。虽然我已经掌握了基于GUI的象棋平台,但我对编程和网络编程都是初学者。 为了实现这个目标,我想使用第三方应用程序或软件(除了套接字编程)来让两台计算机上运行的Python程序进行通讯。我的想法是,每当有一位玩家移动棋子时,我希望将更新后的棋子坐标以字符串/列表的形式通过互联网发送到第二个玩家,以便他知道发生了什么。请问从哪里开始学习,或者需要阅读哪些相关资料?使用像telepathy这样的开源聊天工具来传递更新的字符串/坐标列表的想法可行吗?

2
这不是一个适合在SO上发布的问题——它太笼统了,难以回答,或者需要征求意见。你最好去找一个现有的开源多人棋类程序(实际上,任何开源应用程序都可以。即时通讯应用程序可能是个不错的选择),看看它是如何处理的......然后再看看其他程序,并以此作为想法基础,查找技术/相关信息以进一步提高理解。 - Jon Clements
听着,如果没有一个计算机作为服务器,你是无法让两台计算机在互联网上进行通信的。尤其是对于像游戏这样复杂的通信。 - aIKid
@JonClements:什么是SO问题?(抱歉我是新手) - Srij
@Srij SO = Stackoverflow,Question = 你刚才问的那个问题 :) - Jon Clements
3个回答

3

您需要使用套接字模块示例程序。其实使用套接字并不难,基本上服务器端需要bind()listen(),然后accept(),而客户端只需要connect()。从那里开始,可以使用recv()sendall()分别接收和发送数据。如果您真的不想使用socket,那么可以使用像IRCXMPP这样的聊天协议。


2
套接字可能是合适的,但从 OP 的表述来看,他想要“除了套接字编程之外的任何东西”。 - hexparrot
@hexparrot 啊,我只是匆匆浏览了一下问题。 - Ramchandra Apte

0

聊天/即时通讯解决方案似乎是个好主意。

对于聊天/即时通讯,您可以使用Jabber/XMPP。您需要设置自己的服务器或找到一个为公众提供服务的托管方。设置Jabber服务器相当容易,例如您可以使用OpenFire。要连接到Jabber,您可以使用python xmpp库来发送和接收消息。这可能是最简单的方法,因为Jabber库往往非常易于使用。(我在Java和.NET中做过,但没有在Python中做过)。

另一种方法是使用类似于Twitter的消息传递方式。请参见Python Twitter library: which one?以获取支持直接消息传递(这是您所需的)的库的推荐。其优点是,一旦您学会了Twitter API,就不需要自己的服务器。


0

这是一个广泛而主观的问题,但我在Python中首选的网络通信协议是Twisted的Perspective Broker。它是事件驱动的,设置有点复杂,并需要控制程序的事件循环,但它非常好用。它允许客户端和服务器之间进行双向通信,并具有远程对象的便利性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接