2011-06-17 153 views
1

我一直在試圖解決如何解決這個問題,但我不知道從哪裏開始。Java小應用程序在tomcat服務器上與servlet通信

我有一個用Java編寫的遊戲小程序,我試圖通過網絡製作多人遊戲。目前它是一個獨立的應用程序,但最終它需要在某種網頁上,客戶可以通過瀏覽器訪問它並相互對抗。

我在想,每個客戶端小程序可以使用套接字與一個在tomcat服務器上不斷運行的小程序進行通信。服務器上的這個小程序將處理傳入套接字連接,創建新線程處理每個連接,維護連接客戶端列表以及設置遊戲。客戶也可以通過與服務器通信從數據庫中獲取有關過去遊戲等的信息。

例如,我希望客戶能夠開始遊戲。然後通知其他客戶他已經開始了一個遊戲並且可以加入遊戲。然後,當主機點擊開始遊戲時,所有其他客戶端都會收到通知,並且遊戲將在其小程序中開始。誰先解決這個難題,然後點擊完成。他的分數將被髮送到服務器小程序,然後將結果轉發給每個連接的客戶端。

所以我有一些問題

  1. 這聽起來像一個合理的計劃?

  2. tomcat如何協助?

  3. 我該如何將它部署到tomcat?我在eclipse中這樣做,並設置了一個本地tomcat服務器。我只使用eclipse在服務器上運行該類,然後套接字連接到小程序上的http://localhost/packagename/classname

  4. servlet需要擴展哪些類才能連接?由於servlet是一個非Http Servlet,因此將從一個applet進行連接?

  5. 您可以推薦一些文檔或提供一些客戶端applet的示例代碼與使用tomcat的服務器applet進行通信嗎?我見過的所有示例都只是使用Http將信息傳遞給servlet的html表單。

+0

「Java applet與tomcat服務器上的applet通信」。當然,你的意思是在Tomcat服務器上運行一個「servlet」,不是嗎? – Bruno

+0

也許,是的。標題固定 – Sbram

+0

它實際上也貫穿全文。 – Bruno

回答

1

如果您的應用程序不需要通過原始套接字與服務器進行實時通信(聽起來像您的套接字聽起來沒有),您最好使用標準Web協議來爲您的applet與服務器通信。

一個選擇可能是HTTP/JSON。你的applet可以建立到servlet的HTTP連接,並且該servlet將生成一個JSON對象,該對象表示服務器想要發送給客戶端的消息。客戶端將啓動一個將循環的線程,對您的servlet進行異步阻塞調用以輪詢新數據。

這種方法的主要優點是,將來如果你這麼傾向,你可以拋棄客戶端Java applet,並用HTML5和Javascript代替它。

GSON是一個用於JSON序列化/反序列化的庫。而java.net.URL就是你用來連接你的applet中的servlet的東西。

+0

您是否有任何文檔顯示使用http與servlet通信的applet?我只需在兩者之間傳遞簡單的文本消息並使用交換機來處理要採取的操作即可。還有你可以說我的tomcat問題嗎? – Sbram

+0

@Sbram http://www.devdaily.com/java/edu/pj/pj010023有一些有用的例子。 Tomcat沒有添加任何特別的東西,你只是將它用作標準的servlet容器。 – ironchefpython

0

是的。你所描述的是applet-servlet通信。通常,你的applet會發送消息給servlet,然後跟蹤與其他所有客戶端applet的通信。

在線有幾個applet-servlet通信示例。這是一箇舊的,但仍然有效,代碼沒有格式化。

http://docstore.mik.ua/orelly/java-ent/servlet/ch10_01.htm

周圍有小程序安全限制和服務器,他們可以溝通,因此多數民衆贊成別的東西要記住。

+0

因此,由於applet將直接進行通信用servlet做我需要一個非Http servlet嗎?該applet是否必須通過tomcat服務器播放,即通過localhost:8080訪問,還是可以在網絡上的任何位置?基本上可以請你提供一些關於問題3的更多解釋。 – Sbram

相關問題