我必须用Java实现一个简单的游客客户端 - 服务器游戏。不幸的是,我刚刚开始使用网络编程,并且在选择合适的解决方案时遇到了一些问题。
我们假设我正在创建一个国际象棋游戏,其中两个客户端可以连接到服务器,使用他们的用户名和密码进行身份验证和播放。必须将客户端编程为applet(瘦客户端),但我不知道应该将其用作服务器。
我的意思是,我已经阅读了几种不同的可能性,如RMI,套接字,servlet,但仍然不知道哪个适合我的需求。我有点困惑,因为我不完全理解如何进行沟通。
我应该创建一个可以在服务器上一直运行并等待播放器的可执行服务器吗?在我看来,这似乎是一种奇怪的方式。或者有更简单的方法,例如我可以创建一个servlet并将其放在Tomcat服务器上,以便只有有任何玩家才能运行服务器吗?该servlet是否可以与applet(客户端)通信,反之亦然?*
我真的很感激一些提示。
答案 0 :(得分:3)
我可以创建一个servlet并将其放在Tomcat服务器上,这样只有有任何玩家才会运行服务器
Tomcat实例无论如何都会运行,否则玩家无法连接到它。
你可以做的是提供一个服务器,当玩家连接时启动一个新的游戏实例。服务器本身必须始终运行。
在技术方面,我建议你使用任何你觉得舒服的东西。不关心性能,但尝试开始。
因此,如果您已经掌握了通信技术方面的知识,请尝试使用它。请注意这些限制并考虑这些限制(例如消息格式,推/拉通信等)。
答案 1 :(得分:0)
如果您正在寻找Java中的netwrok应用程序框架,那么您可以考虑阅读Apache MINA。文档声称它“可以帮助用户轻松开发高性能和高可扩展性的网络应用程序。”它通过Java NIO支持各种传输,如TCP / IP和UDP / IP。可以看到功能摘要here。
我在MINA的个人经历迄今为止很好,并且用于各种项目。一个实现类似于你的情况,它不是多人游戏,但涉及连接服务器的多个小程序。我发现MINA非常善于处理多个会话。它做得非常整齐。此外,它非常容易扩展和维护代码。易于添加过滤器和定义协议。
没有。良好的tutorial available to jump start和初始设置非常容易。
然而,像任何新兴的开源项目一样,它也存在问题。那就是:在线社区虽然规模很小,但文档虽然快速提升,却非常有限。
官方user guide涵盖了大部分基础知识,如果您想了解更多信息,这是一个很好的起点。
答案 2 :(得分:0)
这取决于你追求的是什么样的游戏。 Applet通常是用于呈现动画(完全用Java)并可从浏览器访问的不错选择。真实世界的例子将转向Flash以进行客户端演示。
如果您的游戏是转型游戏(国际象棋,牌等),那么您可以以servlet或Web服务或ajax的形式实现逻辑,并适当使用哈希表或数据库来存储服务器端的实时会话。如果您的游戏更多地涉及用户体验(例如,以极品飞车类型为例),那么创建自定义服务器会更有意义。