如何从队列中向多个客户端发送数据

时间:2017-04-25 17:10:26

标签: python multithreading networking server multicast

我正在使用Python编写一个小型编程游戏/环境,以帮助我的弟弟学习编码。它需要通过网络运行,我是网络编程的新手。我将解释游戏的概念,以便有人能指出我最好的方向。

这个想法是一个25x25'二极管的简单网格,'具有固定位置的正方形和可编辑的颜色值,基本上模拟了一个非常小的屏幕。除了网格显示外,还有一个命令窗口,可以输入Python代码并将其发送到InteractiveConsole的实例,以及一个聊天窗口。客户端需要能够将Python命令发送到主机,主机将运行代码,然后以表示网格更改的字符串形式接收输出。我这样做的概念涉及在传入和传出事件的主机端维护一个队列来处理和中继到各个线程上的客户端。任何给定的命令/聊天事件都将发送到主机并中继到所有客户端,包括创建事件的客户端,以便这些事件在其命令/聊天窗口中对所有客户端可见。对网格的所有更改都将来自主机,因为处理来自客户端的命令,并且还将发送给所有客户端。

我主要不明白的是如何在所有客户端之间进行同步,即如何知道队列中的给定项目在从队列中清除之前是否已成功发送给所有客户端,因为任何单个线程都这样做过早地阻止该项目被发送给其他客户。这是一个非常开放的问题,因为我知道在我准备实施之前我肯定需要消耗一些学习材料。我不是要求一个具体的解决方案,而是要求在一般情况下解决方案在我的情况下可以起作用。我在业余时间这样做,所以我不想花一个月的时间浏览网络教程,这些教程没有指出我将适用于这个项目的方向。

1 个答案:

答案 0 :(得分:1)

我的方法是使用可以向多个客户端广播的udp服务器。基本上,所有客户端都将在游戏会话期间连接到此服务器,并且服务器会在更新时将游戏状态广播给客户端。由于您的游戏相对简单,这种方法可以为您提供实时更新。