带有Android客户端的Java游戏服务器

时间:2011-09-05 19:34:16

标签: java client-server communication

我即将开始一个游戏项目。它将是一个具有客户端 - 服务器架构的网络游戏,具有Java服务器以及Web和Android客户端。影响在于低带宽(用于移动设备)和快速响应。有哪些技术/库可用于客户端 - 服务器通信?我在网络应用程序(GWT / Vaadin和servlets)方面经验丰富,但不知道在实现游戏服务器时应该使用什么,主要用于通信。

我知道我可以使用带有对象序列化的Java套接字或JSON来将数据从客户端传递到服务器,但我不知道这些方法在带宽方面有多高效?还是比这些更适合?只要把我指向正确的方向就足够了。

提前致谢!

3 个答案:

答案 0 :(得分:1)

就Android客户端库而言,有两个主要选项。第一个是java.net。*包,你将​​主要使用HttpUrlConnection

更好的选择是使用Android SDK中标准的Apache HTTP package。它在处理网络连接时为您提供了更多的控制/灵活性/冗长性。

这是如何使用Apache客户端库的一个不错的example。我建议使用这些,因为java.net包实际上只适用于最基本的GET请求。

我建议使用JSON方法,因为那时你不必编写Java servlet后端来反序列化Java对象。然后,后端可以独立于客户端进行更改。

答案 1 :(得分:1)

主要问题是,如果您使用WebTechnologies,则无法实现从服务器到客户端实现通信的有效方式......

通过HTTP GET的客户端到服务器工作正常,但您必须使用某种Comet来实现从服务器到客户端的通信。

这就是为什么通过套接字进行普通的旧tcp连接可能会更好地与客户端通信,尤其是对于Android客户端。

但是使用tcp socket实现它可以很好地使用android,但不适用于浏览器。

我的解决方案:通过WebSocket实现通信。

WebSockets(HTML5的一部分)是一个HTTP扩展,用于启用客户端和服务器之间的全双工通信。

最主要的网络浏览器支持WebSocket,如Firefox 4,Chrome 9,Opera 10.7 但不是Internet Explorer(在IE 10中计划支持,与Windows 8一起使用)

对于android,还存在实现通信的java库,我会怀疑,它们对android也很好用。

Expample: http://code.google.com/p/weberknecht/

对于服务器端:Servlet API 3.0支持,如Jetty 8

在我看来,WebSocket可以解决问题,因此您可以实现支持WebSocket的单个服务器,并通过WebSocket与Android客户端以及浏览器客户端(Internet Explorer除外)进行通信

答案 2 :(得分:-1)

这取决于项目的时间范围。如果时间充足 - 请亲自动手并比较与您的目的相关的技术。