Java applet与tomcat服务器上的servlet通信

时间:2011-06-17 18:10:57

标签: java sockets tomcat servlets applet

我一直在努力解决如何处理这个问题,但我不知道从哪里开始。

我有一个用Java编写的游戏小程序,我正在尝试通过网络制作多人游戏。目前它是一个独立的应用程序,但最终它需要在某种类型的网页上,客户端可以通过浏览器访问它并相互对战。

我在想每个客户端applet都可以使用套接字与在tomcat服务器上不断运行的applet进行通信。服务器上的这个小程序将处理传入的套接字连接,创建新的线程来处理每个连接,维护连接的客户端列表,以及设置游戏。客户还可以通过与服务器通信从数据库获取有关过去游戏等的信息。

例如,我希望客户能够开始游戏。然后通知其他客户他已经开始游戏并且可以加入游戏。然后,当主持人点击开始游戏时,所有其他客户端都会收到通知,游戏将在他们的小程序中开始。谁先解决这个难题然后点击完成。他的分数将被发送到服务器applet,然后将结果转发给每个连接的客户端。

所以我有一些问题

  1. 这听起来像是一个合理的计划吗?

  2. tomcat如何帮助解决这个问题?

  3. 我如何将其部署到tomcat?我在eclipse中这样做,并设置添加了一个本地tomcat服务器。我是否只是在服务器上使用eclipse运行该类,然后socket连接到applet上的http://localhost/packagename/classname

  4. servlet需要扩展哪些类才能使其可连接?如果servlet是非Http Servlet,那么连接将来自applet?

  5. 您能推荐一些文档或提供一些使用tomcat与服务器applet通信的客户端applet的示例代码吗?我见过的所有示例都只是使用Http将信息传递给servlet的html表单。

2 个答案:

答案 0 :(得分:1)

如果您的应用程序不需要通过原始套接字与服务器进行实时通信(听起来与您的不同),那么最好使用标准Web协议让您的applet与服务器进行通信。 / p>

一种选择可能是HTTP / JSON。您的applet可以与servlet建立HTTP连接,该servlet将生成一个JSON对象,该对象表示服务器要发送给客户端的消息。客户端将启动一个将循环的线程,对您的servlet进行异步阻塞调用以轮询新数据。

这种方法的主要优点是,在未来,如果您如此倾向,您可以放弃客户端Java小程序,并将其替换为HTML5和Javascript。

GSON是用于JSON序列化/反序列化的库。并且java.net.URL是您用来连接applet中的servlet的东西。

答案 1 :(得分:0)

是。你所描述的是applet-servlet通信。通常,您的applet会向servlet发送消息,然后跟踪与所有其他客户端小程序的通信。

有几个applet-servlet在线通信的例子。这是一个旧的,但仍然有效,代码没有格式化。

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

applet及其可以与之通信的服务器存在安全限制,因此需要记住其他内容。