快速业务通道

手机网游制造之请求处理篇 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

手机网游制造之请求处理篇

时间:2011-01-24 csdn博客 陈跃峰

开发程序:疯狂的炸弹

开发进度:第四期

本期要点:设计服务器端请求处理功能

开发平台:java平台

经过前面3期的讲解,我们的手机网游《疯狂的炸弹》大体已经完成,在加上上本期开发的请求处理功能,就OK啦。快来试试我们的《疯狂的炸弹》吧(游戏下载地址:http://www.shudoo.com/bzsoft)。

既然是手机网游,自然客户端的数量就会比较多,所以多个客户端同时向服务器端发送请求的情况很常见。为了更好的运行,服务器端需要同时处理多个客户端的请求,这就是用到并发处理。下面就随着我们一起学习手机网游是如何并发处理多个客户端的请求的。

请求处理设计思路

在《疯狂的炸弹》程序的服务器端请求处理功能中,没有采用“线程池”技术,而是直接采用当一个客户端连接请求到达时,启动一个新的线程进行处理,在连接完成以后关闭线连接程。

通过为每个连接的客户端设置新的线程,很容易就实现了处理多个客户端的要求,使得多个客户端可以同时工作(图1)。在每个线程的内部,先根据客户端网络协议格式规定,解析客户端发送过来的请求数据,然后依据不同的请求命令分别进行处理。

如何并发处理

由于服务器端需要同时处理多个客户端发送的请求,所以需要对核心的数据进行并发处理,这样才能解决数据同步的问题。下面以分配用户ID为例子,来介绍服务器端并发处理的过程。客户端第一次连接服务器端时,服务器端反馈一个唯一的序号给客户端。服务器端每派发一个ID,ID的值就加1。

如果多个客户端同时发送请求,服务器端计数就有可能出错。使用Java语言中的synchronized关键字修饰处理逻辑,可以解决这个问题。使用该函数反馈的userID(图2),可以保证在多个客户端同时访问的情况下数据的同步。

设计服务端网络协议

服务器端网络协议,最主要的功能就是将服务器端的处理结果数据反馈给客户端,从而控制客户端的逻辑行为。在设计服务器端网络协议时,需要考虑有几种反馈指令以及每种反馈需要反馈的参数等。此外,还要考虑如何减少数据的重复。

服务器端的网络协议中的成功指令用于响应客户端的准备指令,在客户端登录成功以后,向服务器端发送开始指令,如果服务器端无法匹配对战用户,则反馈继续等待指令,这样客户端将继续等待其他玩家。如果有其他玩家匹配或已经由服务器匹配给其他玩家对战,则反馈初始数据指令,并反馈服务器端生成的房间编号、初始地图数据、角色数据等。

在游戏开始以后,客户端每隔一定时间发出获得数据指令,服务器端反馈游戏刷新指令,将当前游戏数据反馈给客户端。客户端发送的移动指令等,直接在服务器端进行处理,不反馈指令。

请求处理设计步骤

第一步:创建项目

启动Eclipse,选择“File→New→Java Project”,设置项目名称为“BomberServer”,并一路选择“Next”, 完成项目的建立。然后新建一个入口类,选择“File→New→Class”,设置名称为“Server”,点击“Finish”。创建项目的代码下载地址是http://www.shudoo.com/bzsoft。

手机网游制造之请求处理篇(2)

时间:2011-01-24 csdn博客 陈跃峰

第二步:设计游戏线程类

选择“File→New→Class”,并设置名称为“LogicThread”,点击“Finish”完成游戏线程类的创建,该类读取客户端发送数据以及向客户端发送数据。关键码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):

//读取数据 byte[] b = new byte[1024]; is = s.getInputStream(); int n = is.read(b); byte[] request = getData(b,n); /

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号