手机网游客户端指南-网络通信
本文主要介绍手机网游客户端的网络通信架构,以及和移动网络对接的事宜。
Agent`K曾经是个web工程师,相信很多程序员也是从tomcat、apache开始的。
做web应用基本上可以不用去理会网络连接的事情,web服务器和浏览器会替你搞定。
当然网络游戏也可以使用http连接,这就要求服务器程序至少有一部分功能是运作在
web服务器上的(除非你在服务器程序中嵌入jetty之类的东东)。
http连接的无状态特性也是个问题,你需要想办法让服务器知道每次的连接是哪个客户端发起的。
所以更好的选择是socket连接。
socket连接的数据交换都是纯字节流的,所以我们必须定义出一种固定的数据包格式,
以便区分不同的逻辑数据包。在服务器端有开源的网络通信框架:mina(java的)。
它提供一些可拓展的逻辑数据包自定义接口供我们使用。一个比较简单的例子就是:
每个数据包的开头都用一个int表示这个数据包的数据部分的字节长度,然后呢?
聪明的你知道该怎么做了吧~
客户端目前还么有看到有什么框架可用,自己动手实践吧,自己炒的菜才有味道,
自己做的框架才有成就感,O(∩_∩)O~
--标记:此处和代理服务器有关--
移动互联网,只接中国移动。(不得不说下,中国移动这个“移动”从字面上霸占了移动互联网关键词,
所以给我们个错觉就是一说“移动”就是中国移动。不过其他电信提供商,好吧,“电信”也被霸占了,在实力
上真的远远落后于中国移动,至少在手机游戏接入上是这样。)现在几乎全部的手机网游首先接入的都是CMWAP。
你可能要问,我们的服务器放在一个有独立IP的机房里,能上网的手机不就都能去访问了么?不然,这是一个历史问题。
曾经的手机只能用WAP、GPRS上网,前者需要中国移动开放特定接口(我们称之为socket)才能接入,在访问速度和节省流量方面有些用处。
这种特定的接口虽然可能,或者将要退出历史舞台,但目前还是根深蒂固地存在着。
好吧,听说过的童鞋可能已经不耐烦了。说下socket到底是个甚吧。
简单~就是个固定的IP地址和端口,客户端和它建立连接之后,立即发送指定的识别字节过去,它就会建立连接到我们的服务器,之后所有的数据都进行转发。
Over。需要注意的是:我们的服务器一般需要放在移动ISP的机房里;指定的识别字节会原样转发给我们的服务器,
这个特性破坏了上面提到的客户端通信数据结构,服务器需要在连接建立后做一些初始化工作以消除这些字节带来的影响。
嗯嗯,****那个地方说的不对,有些大神可能都在发笑了,勿喷,求指正,求分享。
==割==
写完重新检查了下,漏了一句:客户端需要单独的线程来处理网络通信,它是客户端仅有的几个线程之一。其他线程是什么?埋个伏笔吧。嘿嘿。