|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
主要缺点就是:速度比较慢,没有C和C++快
一个多人在线的棋牌类收集游戏的项目邻近序幕,我介入了该项目标全部计划流程,而且完成了90%的中心代码。关于这个项目,有良多中央值得聊一聊。本系列不盘算把这个项目将很多么具体标准,那是计划文档应当形貌的,我盘算只说说一些值得注重的中央。
这个项目标一个出格的地方是,客户端是手机,用户经由过程挪动收集与服务器通讯。和PC比拟,手机的处置才能极弱,并且收集流量用度高贵。由于除要思索一般收集游戏的一些成绩以外,这两点也必要在计划中充实思索。
起首是开辟言语的选择,因为服务器是Linux的情况,MS的手艺间接扫除,至于MONO嘛,我其实不宁神。可供选择的是C++和Java,Java胜在收集才能壮大,开辟周期短,有浩瀚框架和开源库的撑持,要写出烂得不成承受的代码也不简单;C++则胜在速率快。综合各方面要素,C++更简单把这个项目酿成一堆代码恶梦,我们选择了Java。
1、收集
收集游戏,起首面对的成绩固然是怎样举行收集通讯。起首思索的是HTTP协定,由于一切的J2ME手机都撑持这个,我们固然想尽量的兼容用户。并且HTTP协定封装水平已十分高了,不必往思索线程、同步、形态办理、毗连池,不外HTTP协定有两个不爽的中央:
◇协定无形态,这个成绩已困扰过良多人良多次了。我曾思索过的办理举措是改革HTTP协定,在数据传输完成以后不封闭socket,可是如许唱工作量十分年夜,在项目周期中,基础上就是Missionimpossible,不予思索。那末客户也就只能经由过程轮询的体例向服务器哀求数据。
◇收集流量过年夜。就这个项目来讲,收集间传送的只是指令,可是每次传送都要加上一堆毫无用途的HTTPHead,再加上客户端必要做轮询,这个流量关于手机来讲几乎可怕,经复杂测试,依照0.03元/K的GPRS收集用度盘算,一局牌竟然要损耗1元多的用度(每秒轮询),其实不成承受。大概我们能够接纳流量费包月的资费体例,不外这个话题与手艺有关。
以上成绩招致我们选择了Socket,这意味着我们将没有一个web情况,良多工具都要靠本人往完成:线程办理、客户形态监控、对象池、把持台……….
收集部分盘算接纳JavaNIO来完成,这是一种新的收集监听体例,基于事务的异步通讯,能够进步功能。每一个客户端毗连以后,会有一个自力的SocketChannel与它通讯,这个SocketChannel会在用户的全部保存周期中存在。用户假如断开毗连,服务器会失掉-1,而且会抛出Connectionreset非常,经由过程捕捉这两个特性,能够在用户不测断开毗连后清算相干的资本。因为NIO是异步通讯的,以是没有庞大的线程办理。
通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。 |
|