2013-04-15 25 views
0

我試圖建立一個2客戶端和1服務器的Android應用程序。設計如下:2客戶端+ 1服務器遊戲在Android與PHP中的網絡服務器

  1. 客戶端1登錄。
  2. Clinet 2登錄。

  3. 客戶端1輸入一些需要服務器通過MySQL數據庫進行驗證的文本。

  4. 基於服務器的響應,服務器發送了一些成績給客戶2

發生這種情況的來回,直到遊戲結束。

這兩個客戶端都是Android移動設備。我能夠建立一個客戶端(JAVA)+服務器(PHP)+ MySQL連接,並且工作正常。 但是現在我對如何在我的應用中與同一臺服務器交互實現2個客戶端的概念感到困惑。有人能幫我解決這個問題嗎?

在此先感謝。

+1

你有什麼麻煩?他們都應該打相同的網絡服務。如果你需要知道哪一個是哪一個,讓他們發送一個唯一的標記與每個消息 - ANDROID_ID將工作正常。 –

+0

php並不理想,但您可能想查找php的套接字庫,特別是'select()'http://php.net/manual/en/book.sockets.php – 1337holiday

+0

感謝您的回覆。我是PHP的新手,所以我不知道如何將響應重定向到特定的客戶端。我能夠從這兩個客戶端訪問相同的Web服務,並且還會看到ANDROID_ID。是否有可能向我指出一些示例代碼,告訴我客戶特定的響應。 – ASingh

回答

0

一些重要的用途是缺少:

  • 如果兩個以上的客戶端連接,會發生什麼?
  • 客戶端1如何知道客戶端2以及他如何與他開始遊戲?
  • 如果客戶端之一斷開連接會發生什麼?

通常,這些用例的答案表明您的服務器具有狀態,至少您需要處理已登錄客戶端的狀態以及活動遊戲的狀態。

您可以使用PHP和MySQL實現它,但您可能會發現自己花費大部分時間處理與架構相關的問題,而不是添加新功能。 我會建議選擇更好的框架,至少Servlets。

但是,如果你仍然想這樣做在PHP和沒有回答上面的用例:

  • 登錄後,開始拉機制:每x秒,客戶端向服務器請求,如果有信息對他來說,並根據迴應採取適當的行動。
  • 向服務器添加響應表,無論何時您需要告訴客戶端,都將客戶端ID和響應添加到此表中。
  • 您可能需要一個表登錄用戶和一個遊戲狀態表。

客戶端1登錄並開始拉動

  • 客戶端1點回應:什麼也不做

客戶端2登錄並開始拉動

  • 客戶端1個響應:發送文本
  • 客戶端2響應:什麼都不做

客戶端1個發送文本

  • 客戶端1迴應:什麼也不做
  • 客戶端2響應:結果

客戶端2發送文本

  • 客戶端1響應:結果
  • 客戶端2迴應:do什麼

還有其他的方法,但再次,在我看來,PHP是不是這裏的正確的解決方案。

希望這有助於亞龍