网络游戏服务器端开辟心得之网络[Java编程]
本文“网络游戏服务器端开辟心得之网络[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
一个多人在线的棋牌类网络游戏的项目临近尾声,我参与了该项目的整个计划流程,并且完成了90%的核心代码.关于这个项目,有很多地方值得聊一聊.本系列不打算把这个项目将得多么具体标准,那是计划文档应当描写的,我打算只说说一些值得注意的地方.
这个项目的一个分外之处是,客户端是手机,用户通过移动网络与服务器通信.和PC相比,手机的处理本领极弱,并且网络流量费用高贵.因为除了要考虑普通网络游戏的一些问题之外,这两点也需求在计划中充分考虑.
首先是开辟语言的挑选,由于服务器是Linux的环境,MS的技术直接解除,至于MONO嘛,我实在不安心.可供挑选的是C++和Java,Java胜在网络本领强盛,开辟周期短,有众多框架和开源库的支持,要写出烂得不可承受的代码也不简单;C++则胜在速度快.综合各方面因素,C++更简单把这个项目变成一堆代码恶梦,我们挑选了Java.
1、网络
网络游戏,首先面对的问题当然是若何举行网络通信.首先考虑的是HTTP协议,因为全部的J2ME手机都支持这个,我们当然想尽大概的兼容用户.并且HTTP协议封装程度已经非常高了,不用去考虑线程、同步、状况管理、衔接池,不过HTTP协议有两个不爽的地方:
◇ 协议无状况,这个问题已经困扰过很多人很多次了.我曾考虑过的办理办法是改革HTTP协议,在数据传输完成之后不关闭socket,但是这样做工作量非常大,在项目周期中,基本上就是Mission impossible,不予考虑.那么客户也就只能通过轮询的方法向服务器恳求数据.
◇ 网络流量过大.就这个项目来说,网络间传送的只是指令,但是每次传送都要加上一堆毫无用处的HTTP Head,再加上客户端需求做轮询,这个流量关于手机来说简直可怕,经简单测试,按照0.03元/K的GPRS网络费用计算,一局牌竟然要损耗1元多的费用(每秒轮询),实在不可承受.大概我们可以采取流量费包月的资费方法,不过这个话题与技术无关.
以上问题招致我们挑选了Socket,这意味着我们将没有一个web环境,很多东西都要靠自己去实现:线程管理、客户状况监控、对象池、掌握台……….
网络部份打算采取Java NIO来实现,这是一种新的网络监听方法,基于事件的异步通信,可以提高性能.每个客户端衔接之后,会有一个独立的SocketChannel与它通信,这个SocketChannel会在用户的整个生存周期中存在.用户假如断开衔接,服务器会得到-1,并且会抛出Connection reset非常,通过捕捉这两个特点,可以在用户不测断开衔接后清理相关的资源.由于NIO是异步通信的,所以没有复杂的线程管理.
以上是“网络游戏服务器端开辟心得之网络[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |