手机网络游戏开发:Java与网络通信的挑战

需积分: 1 0 下载量 39 浏览量 更新于2024-09-13 收藏 32KB DOC 举报
"这篇文章除了介绍网络在线游戏开发的心得体会,还涉及了具体的技术选择和网络通信的问题。作者在项目中选择了Java作为开发语言,主要原因是Java在网络功能上的强大,开发效率高,以及丰富的框架和库支持。文章讨论了在手机环境下,由于设备处理能力和网络费用的限制,需要特别考虑的因素。在HTTP协议和Socket之间,作者最终选择了Socket,因为HTTP协议的无状态性和额外的网络流量开销对手机游戏来说是不合适的。为了应对这些问题,作者计划使用Java NIO进行网络通信,以实现更高效的异步事件驱动模型。此外,还需要自行实现线程管理、客户状态监控等基础功能。" 在这个网络在线游戏开发项目中,作者主要分享了以下几个关键知识点: 1. **开发语言选择**:考虑到服务器运行在Linux环境,排除了微软的技术,作者对MONO不信任,最后在C++和Java之间选择了Java,主要基于Java在网络功能、开发效率和社区支持的优势。 2. **网络通信**:文章对比了HTTP协议和Socket通信。HTTP协议虽然广泛支持,但无状态性使得状态管理复杂,且额外的HTTP头增加了不必要的网络流量。这在手机游戏中是不可接受的,因此转向了Socket通信。 3. **Java NIO**:为了解决HTTP协议的不足,作者计划采用Java的非阻塞I/O(NIO)进行网络通信,以实现基于事件的异步模型,提高系统性能。NIO允许单个线程处理多个连接,降低了资源消耗。 4. **自定义实现**:由于选择了Socket,意味着需要自行处理诸如线程管理、客户状态监控、对象池和控制台等基本服务,这是在没有Web环境下的常见挑战。 5. **手机环境的特殊考虑**:手机的处理能力和网络费用限制了设计决策,例如需要减少网络流量以降低用户成本,同时要确保游戏在有限硬件资源上的流畅运行。 6. **网络流量优化**:为了避免HTTP协议带来的流量浪费,作者提出可能需要通过包月流量计费来减轻用户负担,但这属于业务策略而非技术问题。 通过这些细节,我们可以了解到在网络在线游戏开发过程中,技术选型和网络通信策略的重要性,以及如何针对特定环境做出合适的设计决策。