游戏大厅 从基础开始(3)——最吸引眼球的部分 客户端与服务器的连接
游戏大厅 从基础开始(3)
——最吸引眼球的部分 客户端与服务器的连接
看了上篇随笔的回复 发现大家都很关心如何实现连接。
但是本节可能不会涉及到数据连接的具体实现。
(补充: tcp实现封装已经完成 请参考 http://www.cnblogs.com/waynebaby/archive/2009/01/14/1375234.html)
盲目的实现连接 而不试图从更高的位置来考虑连接的作用,只能徒增耦合。
而网络传输的实现各有特点,耦合过高的话 ,稍不注意业务逻辑就会成为通讯协议的牺牲品。
这种状况 往往让我们产生"只能针对xxx传输协议"的架构 。
其实只要多加思考,我们便能跳出协议的樊篱,毕竟"遵循某个接口实现一个基于xx通讯协议的类" 属于那种可以几百块钱外包到"老少边穷地区地方大学贫困学生"的项目,耗费精力不一定值得。好吧,其实当年我就是这样一个很耗精力大学生,所以我们更要给年轻后辈锻炼的机会不是么!
先说封包
封包是什么?
就是一坨数据。
可能是个问题,可能是个答案,可能是个"我还活着"的声明,可能是团乱码
其实没什么可说的, 大体上就是数据和标识
有的有利于工作时候查询数据,处理数据
有的有利于传输。
连接的功能
大家来跟我一起自我催眠
闭上眼睛
想象我们的网络游戏大厅是一个地方政府办公室,你的地盘你做主,你就是党委书记。
想象我们的客户端是一个个街道办事处。
互联网 就是邮政电信系统
我们的数据 就是一封一封的信件文档。
那么我们的连接应该是什么呢?
最早的实现传达室(UDP)
后来有了电话和传真机 (http)
数据专线 (tcp持续连接)
这些都是各种协议细节。
你要和一个街道办事处互通一下信息,
你需要自己去传达室么?
你需要亲自操作传真么?
你需要操作电脑,打开软件,登陆帐号, 发送信息么?
你需要了解这个街道办事处电话有没有欠费 是否有专线 邮递员有没有玩忽职守 以便决定你怎样传递信息么?
NO , NO ,你已经不是那个层次的人了,你是党的好干部,你只需要询问你的漂亮女秘书!
女秘书,懂么,很高科技哦!
来来美女 发个邮件出去 顺便把包裹去回来,恩再帮我安排明天下午和张太太喝下午茶。
有新技术了?msn? qq? Windows live meeting? 送女秘书去培训! 弄两个秘书轮流培训!
反正你就两个要求,收信,发信!
ICodec就是终端设备,其中包括传达室大爷、传真机、电话、msn 、qq 、数据专线 、微缩胶片 等等等等,把我们的文件变成可以传输的格式,从workingpack变成LinkPack.
眼熟么?这就是桥接模式 把部分功能的可替换实现做成另一个类,通过别的工厂根据配置文件产生后放入主类哦。
话说回来,难道各个街道主任也要势必躬亲么? No, 没有女秘难道没有街道大妈?
所以蜜和大妈的主要作的事情还是一样的,细节有所不同
Server端的小秘书是要连接Client端的 叫做 IClientLink
Client端的大妈是要连接 Server端的 叫做IServerLink
更高级的需求,我们的小秘书和街道大妈 其实都是琛哥派来的卧底,她们就是查理的天使,安插在街道办事处里的天使。
琛哥最近要有组织的摆地摊犯罪,为了防止城管打砸抢,给她们一人一个加密机要小秘书给大妈隐蔽的通风报信,只有用同规格的加密机才能解开对方的密文哦,女特务们加油。。。。
好吧 剩下的事情 就都是邮电系统该做的了。
参考代码:
IPack
IWorkingPack
IWorkingPackNode
今天文件太多了 太麻烦了 其他的部分 我打包好了。。。
https://files.cnblogs.com/waynebaby/Communicate.rar