2012-03-09 93 views
0

所以我試圖找到一個答案,但一定不能正確搜索,或者我想要做的是錯誤的方式去解決它。通過網絡共享的Python

所以我有一個簡單的python腳本,可以在命令行環境中創建一個棋盤和棋子。你可以放置命令來移動棋子。所以我的一位同事認爲在網絡上玩對方會很酷。我同意並嘗試創建一個文本文件來讀取和寫入網絡共享。然後,我們將運行讀取該文件的腳本。我遇到的問題是,我幾乎遭到DOS攻擊該文件共享,因爲它一直試圖檢查網絡共享上的文件以進行更新。

我對Python仍然很陌生,並且從來沒有寫過可以上網的代碼,我們甚至是簡單的本地網絡。所以我的問題是,我應該如何正確地讓兩個人同時訪問這些數據,而不是竊取所有的網絡資源?

哦也即時通訊使用2.6版本,因爲多數民衆贊成其他人使用,他們拒絕改變,以新的語法

+0

try time.sleep() – monkut 2012-03-09 04:51:50

回答

0

首先,不知道你有多少次檢查與移動FLE,很難知道爲什麼文件共享得到了DoS-ed。現在大多數網絡和網絡共享都可以處理這種流量 - 它們都是千兆以太網,所以除非您每次都傳輸大量數據,否則您應該沒問題。如果你每次都傳輸整個文件,那麼我建議你考慮優化它。

這就是說,關於如何在網絡級別處理這個問題,談到你的第二個問題,說實話,你已經在以某種方式做 - 你正在訪問網絡共享上的文件並修改它。唯一需要優化的是能夠有效地完成它。即使在併發世界中的網絡操作也是如此。在這種情況下,它將使用快速內存​​數據庫存儲各種更改/使用高規模RDBMS /在快速服務的Web服務器更好的異步I/O的情況下。

在目前的情況下,由於有兩個用戶在玩這個遊戲,所以我建議你在每次通過網絡時只傳輸差異。因此,不要通過網絡共享修改文件,而是將這些移動發送到服務器組件,並將更改本地同步到文件。當然,這意味着你將需要創建一個服務器組件,它可以做類似這樣的事情

user1的移動<→服務器<→user2的移動。服務器將修改移動文件。

一旦你開始這樣做,你將進入服務器編程/防止競爭條件等領域。這將是一個很好的學習經驗。