2011-10-04 190 views
7

我必須用Java實現一個簡單的遊覽客戶端 - 服務器遊戲。不幸的是,我剛剛開始使用網絡編程,並在選擇適當的解決方案時遇到了一些問題。帶小應用程序的Java客戶端 - 服務器遊戲

我們假設我正在創建一個國際象棋遊戲,其中兩個客戶端可以連接到服務器,用他們的用戶名和密碼進行身份驗證並進行遊戲。客戶端必須被編程爲applet(瘦客戶端),但我不知道我應該用作服務器。

我的意思是,我已經閱讀了幾種不同的可能性,如RMI,套接字,servlet,但仍然不知道哪一個符合我的需求。我有點困惑,因爲我不完全理解溝通將如何進行。

我應該創建一個可執行的服務器,它會一直運行在服務器上並等待玩家?這在我看來似乎是一種奇怪的方式。或者是否有更簡單的方法來做到這一點,例如我可以製作一個servlet並將它放在Tomcat服務器上,以便服務器只有在有玩家的情況下才能運行?該servlet可以與小程序(客戶端)進行通信嗎?反之亦然?*

我真的很感激一些提示。

回答

3

我可以做一個servlet,並把它Tomcat服務器上,這樣只要有任何玩家

Tomcat實例將反正運行的服務器將運行,否則玩家無法連接到它。

你可以做的是提供一個服務器,當玩家連接時啓動一個新的遊戲實例。服務器本身必須始終運行。

就技術而言,我建議你使用任何你感覺舒服的東西。不關心性能,但嘗試着手。

因此,如果您已經對通信技術有所瞭解,請嘗試使用它。請注意這些限制並考慮這些限制(例如消息格式,推/拉通信等)。

0

如果您正在尋找Java中的netwrok應用程序框架,那麼您可以考慮閱讀約Apache MINA。文檔聲稱它「可以幫助用戶輕鬆開發高性能和高可擴展性的網絡應用程序」。它通過Java NIO支持各種傳輸,如TCP/IP和UDP/IP。特徵摘要可見here

我對MINA的個人經驗迄今爲止很好,並且用於各種項目。一種實現類似於你的情況,它不是多人遊戲,但是涉及到連接服務器的多個小程序。我發現MINA非常擅長處理多個會話。它做得非常整齊。而且它很容易擴展和維護代碼。輕鬆添加過濾器並定義協議。

沒有。良好的tutorial available to jump start和初始設置很容易做到。

然而,就像任何新興的開源項目一樣,它也有它的問題。那就是:在線社區很小,文檔雖然迅速提高,但是非常有限。

官方user guide涵蓋了大部分基礎知識,如果您想了解更多信息,這是一個很好的起點。

0

這取決於你之後是什麼樣的遊戲。小程序通常是展示動畫(完全以Java)並且可以從瀏覽器訪問的好選擇。真實世界的例子會轉移到客戶端演示Flash。

如果你的遊戲是一個轉型遊戲(國際象棋,卡片等),那麼你可以實現你的邏輯形式的servlet或web服務或ajax,適當使用哈希表或數據庫來存儲服務器端的實時會話。如果您的遊戲更多地涉及用戶體驗(例如以極品飛車爲例),那麼創建自定義服務器更有意義。

相關問題