2012-03-09 20 views
0

私は答えを見つけようとしましたが、正しく検索してはいけません。あるいは、私がしようとしていることは間違った方法です。ネットワーク共有によるPython

私はコマンドライン環境でチェスボードとピースを作成する単純なpythonスクリプトを持っています。ピースを動かすためのコマンドを入力することができます。だから、私の同僚の一人は、ネットワーク上でお互いにプレイすることが涼しいと思っていました。私は同意し、ネットワーク共有上で読み書きするテキストファイルを作成して試しました。次に、そのファイルを読み取るスクリプトを実行します。私が遭遇した問題は、かなりのDOSがファイルシェアを攻撃したことです。なぜなら、それはアップデートのためにネットワーク共有上のファイルをチェックしようとしていたからです。

私はまだPythonには新しく、私たちの単純なローカルネットワークでさえ、インターネットを動かすコードを書いたことはありません。だから私の質問は、2人が同時にすべてのネットワークリソースを盗んでこのデータにアクセスできるようにするにはどうしたらよいですか?

ああもthatsの何皆用途、彼らは新しい構文に変更することを拒否しているため、バージョン2.6を使用してイム

+0

try time.sleep() – monkut

答えて

1

適切なネットワーキング方法を使用する必要があります。あなたのようなシンプルなネットワークプログラムでは難しいことではありません。

Pythonのstdlib http://docs.python.org/library/socket.htmlのものを使用してください(ページ下部の例も参照してください)。

0

まずオフ、あなたが移動してFLEをチェックしている回数を知らなくても、知ることは困難ですなぜファイル共有がDoSを取得しているのか。最近のほとんどのネットワークやネットワーク共有は、そのレベルのトラフィックを処理することができます。これらはすべてギガビットイーサネットです。大量のデータを転送する場合を除き、大丈夫です。毎回ファイル全体を転送する場合は、最適化を検討することをお勧めします。

これは、ネットワークレベルでこれがどのように処理されるかについての2番目の質問にお答えします。あなたはすでにネットワーク共有上のファイルにアクセスして変更しています。必要な唯一の最適化は効率的に行うことができることです。並行世界におけるネットワーク操作でさえ、同じことをします。その場合、高速なWebサーバの場合、より高性能な非同期I/Oの場合には、さまざまな変更を保存する/高速RDBMSを使用する高速メモリ内データベースを使用します。

現在、ゲームをプレイしているユーザーが2人いるため、ネットワーク上の各回の移動の違いのみを送信する方法をお勧めします。したがって、ネットワーク共有を介してファイルを変更する代わりに、サーバーコンポーネントに移動を送信し、変更をローカルにファイルに同期させることができます。もちろんこれは、このようなことをするサーバーコンポーネントを作成する必要があることを意味します。

user1の移動< - > server < - > user2の動きです。サーバーは移動ファイルを変更します。

あなたがこれをやって起動したら、それは良い学習経験になりますサーバープログラミング/競合状態を防ぐなどの領域に入ります。

関連する問題