所以我试图找到答案,但一定不能正确搜索,或者我正在尝试做的是错误的方法。
所以我有一个简单的python脚本,可以在命令行环境中创建棋盘和棋子。您可以输入命令来移动碎片。所以我的一位同事认为通过网络互相玩会很酷。我同意并尝试创建一个文本文件来读取和写入网络共享。然后我们都会运行读取该文件的脚本。我遇到的问题是我几乎DOS攻击该文件共享,因为它一直试图检查网络共享上的文件以进行更新。
我仍然是python的新手,并且从未编写过在互联网上传输的代码,我们甚至是一个简单的本地网络。所以我的问题是我应该如何正确地允许2个人同时访问这些数据而不窃取所有网络资源?
哦我也在使用2.6版,因为这是其他人使用的东西,他们拒绝改用新语法
答案 0 :(得分:1)
您需要使用正确的网络方式。像你这样的简单网络程序并不难。
使用Python的stdlib http://docs.python.org/library/socket.html中的那个(另请参阅页面底部的示例)。
答案 1 :(得分:0)
首先,不知道你用移动检查了多少次,很难知道为什么文件共享得到了DoS-ed。如今大多数网络和网络共享都可以处理这种流量 - 它们都是千兆以太网,所以除非你每次都传输大块数据,否则你应该没问题。如果您每次都要传输整个文件,那么我建议您考虑优化它。
那就是说,第二个问题是关于如何在网络层面处理这个问题,说实话,你已经以某种方式做到了 - 你正在访问网络共享上的文件并对其进行修改。唯一需要的优化是能够有效地完成。即使在并发世界中的网络操作也是如此。在这种情况下,它将使用快速内存数据库存储各种更改/使用高速RDBMS /在快速服务Web服务器的情况下更好的异步I / O.
在目前的情况下,由于有两个用户在玩游戏,我建议您通过网络每次只传输移动的差异。因此,您可以将移动发送到服务器组件,并将更改本地同步到文件,而不是通过网络共享修改文件。当然,这意味着您需要创建一个可以执行此类操作的服务器组件
user1的移动< - >服务器< - > user2的动作。服务器将修改移动文件。
一旦你开始这样做,你就会进入服务器编程领域/预防竞争条件等。这将是一次很好的学习经历。