老尸 发表于 2015-1-18 11:31:56

发布一篇收集游戏服务器端开辟心得之收集

主要缺点就是:速度比较慢,没有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是异步通讯的,以是没有庞大的线程办理。

通过视频学习比传统的大课堂学习更适合成人化的学习规律。有人说大课堂气氛好,学习氛围浓,热闹,可以认识很多人。

海妖 发表于 2015-1-21 09:35:57

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

只想知道 发表于 2015-1-25 13:54:07

Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

仓酷云 发表于 2015-2-2 22:18:14

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

乐观 发表于 2015-2-7 02:00:40

是一种使网页(Web Page)产生生动活泼画面的语言

飘飘悠悠 发表于 2015-2-14 05:06:23

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

爱飞 发表于 2015-3-4 04:36:42

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

精灵巫婆 发表于 2015-3-6 15:18:31

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

柔情似水 发表于 2015-3-7 15:39:44

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

不帅 发表于 2015-3-11 00:32:02

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

透明 发表于 2015-3-17 17:08:25

多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

小女巫 发表于 2015-3-19 09:52:54

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

愤怒的大鸟 发表于 2015-3-27 16:08:25

是一种将安全性(Security)列为第一优先考虑的语言

再现理想 发表于 2015-3-27 22:27:50

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

山那边是海 发表于 2015-4-6 01:10:56

让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。

冷月葬花魂 发表于 2015-4-11 07:11:27

是一种将安全性(Security)列为第一优先考虑的语言

活着的死人 发表于 2015-4-16 03:45:38

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

admin 发表于 2015-4-24 05:06:39

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

分手快乐 发表于 2015-5-1 13:57:29

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

简单生活 发表于 2015-5-2 21:32:37

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
页: [1] 2
查看完整版本: 发布一篇收集游戏服务器端开辟心得之收集