游戏大厅从基础开始(3)——客户端与服务器的连接

本文配套源码

看了上篇随笔的回复 发现大家都很关心如何实现连接。

但是本节可能不会涉及到数据连接的 具体实现。

盲目的实现连接 而不试图从更高的位置来考虑连接的作用,只能徒增耦合。

而网络传输的实现各有特点,耦合过高的话 ,稍不注意业务逻辑就会成为通讯协议的牺牲品。

这种状况 往往让我们产生"只能针对xxx传输协议"的架构 。

其实只要多加思考,我 们便能跳出协议的樊篱,毕竟"遵循某个接口实现一个基于xx通讯协议的类" 属于那种可以几 百块钱外包到"老少边穷地区地方大学贫困学生"的项目,耗费精力不一定值得。好吧,其实 当年我就是这样一个很耗精力大学生,所以我们更要给年轻后辈锻炼的机会不是么!

先说封包

封包是什么?

就是一坨数据。

可能是个问题,可能是个答案,可能是个"我 还活着"的声明,可能是团乱码

其实没什么可说的, 大体上就是数据和标识

有的有 利于工作时候查询数据,处理数据

有的有利于传输。


连接的功能

大家来跟我一起自我催眠

闭上眼睛

想象我们的网络游戏大厅是一个地方政府办公室,你 的地盘你做主,你就是党委书记。

想象我们的客户端是一个个街道办事处。

互联网 就是 邮政电信系统

我们的数据 就是一封一封的信件文档。

那么我们的连接应该是什么呢?

最早的实现传达室(UDP)

后来有了电话和传真机 (http)

数据专线 (tcp持续 连接)

这些都是各种协议细节。

你要和一个街道办事处互通一下信息,

你需要自 己去传达室么?

你需要亲自操作传真么?

你需要操作电脑,打开软件,登陆帐号, 发送 信息么?

时间: 2024-10-26 21:42:01

游戏大厅从基础开始(3)——客户端与服务器的连接的相关文章

线程-使用Java socket让客户端与服务器建立连接后,服务器如何判断来自客户端的各类请求

问题描述 使用Java socket让客户端与服务器建立连接后,服务器如何判断来自客户端的各类请求 初学java,目前写了一个服务端和一个客户端.大致了解了如何socket通信是如何操作的,并且初步实现了客户端和服务端的通信.也仅仅是是接受和返回简单的字符串.部分代码如下 public void run(){ try{ serverSocket=new ServerSocket(SERVER_PORT_ONE); System.out.println("serversocket已创建"

游戏大厅从基础开始(3.5)——客户端与服务器的连接

可能要犯大忌讳 本次只有代码 所以补充两句 正在实现策略模式的constructor 所以最 近没有时间整理注释 大家凑合看 随后补说明 Code Namespace Communicate.TCP Class TCPLinkListener Inherits Global.WayneGameSolution.Communicate.LinkListener Public Shared ReadOnly propertyKeys As String() = {"Port", "

游戏大厅从基础开始(4)-通过L2X用配置文件反射组装程序(VB only)

很久没更新了.前一阵工作比较充实(就是比较劳累拉~),加上向老赵学习努力瘦身,精神愈发痛 苦,难免就懒惰下来.通用倒了,项目突然死亡,On bench了一个月,越发的无力. 好消息也是 有的,在m$ msdn论坛努力回答问题,总算当上了个版主.虽然7月申请mvp失败 但是鄙人生性好显摆,好听一点就是爱分享,所以一个咕噜爬起来,又是条好汉. -----------------------闲话到此 为止----------------------- 通过配置来制定程序 说起通过配置来制定程序,不得不

游戏大厅从基础开始(2)——最基础的交流:聊天

从前有个国王叫做混沌 他没有七窍 没办法与外界交流 两个朋友希望他开心 就给他凿了七窍 于是他就死了. 所以我们这一章来给用户添加七窍,让用户和房间具有最 基本的聊天功能. 什么?我前面的故事什么意思? 我也不知道. 其实,网络游戏 交流的最基础,就是聊天室. 如果我们把任何一个网络游戏高度抽象化,把所有的非共性的部分 全部去掉,我们会得到这样一个抽象的流程. 客户端发包 给服务器. 服务器处理包. 客户端收取广播数据. 刚刚好 聊天室恰恰实现了这样一个最简化的流程. 用户 说话. 服务器作简单

游戏大厅从基础开始(5)--绕回来细说聊天室(上)

Wiki定义的聊天室 网络聊天室通常直称聊天室,是一种人们可以在线交谈的的网络论坛,在 同一聊天室的人们通过广播消息进行实时交谈. 聊天室可以建立在即时通讯软件(如MSN Messenger.QQ).P2P软件.万维网(如 Halapo, Meebo ) 等基础上,万维网方式更为普通和种类繁多 ,交谈的手段不局限于文本,更包括语音.视频.通常聊天室是按照房间或频道为单位的,在同一房间 或频道的网人可以实时地广播和阅读公开消息.一般情况下,与其它网络论坛.即时通讯不同的是,聊 天室不保存聊天记录.

游戏大厅从基础开始(1)——最简单的关系,用户与房间

做游戏 就好像写一篇简单的记叙文 作为小学语文大纲要求 记叙文需要完整地叙述: 时间,地点,人物,事件 也就是 WHEN,WHERE,WHO,WHAT HAPPENED 猜猜哪个最重 要? 我选WHO WHO 没有WHO,没有了某个意识的主观活动影响客观环境,故事就是 静止的.那就不叫故事,叫速写. 在一个网络游戏服务模型中,最基础的概念就是 WHO 有了WHO游戏才不是电影电视剧那样的直接灌输. 有了WHO电脑屏幕前的个体才能与别的个体有所 区分 有了个体的区分 网络游戏才可以"互动"

游戏大厅从基础开始(8)--绕回来细说聊天室(下)垃圾列表

前情回顾 我们的最初的需求是建立一个拉模式下用户暂存的顺序信息池 列表-e话通聊天室大厅">还是这张工作模式图 我们可以把这个需求设计为 Clear:清除所有内容 GetEnumerator :实现枚举器,新向旧方向的顺序枚举,这样一旦到达上次读取的时间就可以中断 枚举. RecycleFromButtom:从旧向前进行搜索 把满足条件的扔到GC StackOn :把一个新 信息放在堆栈的顶部 这就好像是一个旧报纸回收传送带,一群人在焚烧之前看看还有没有什么值 得保存的信息 排个照,存个档

游戏大厅从基础开始(7)--绕回来细说聊天室(中间偏下)之女仆编年史2

老少爷们儿反击战 上一篇中 我们的女仆终于可以做一些像阳光下其他人一样的事情了,少爷 们可以和女仆酱一起参加下午茶~ 难得的上流社会啊 这是永远1v1被人私有的女奴 和 喝茶时被 人共有的女仆酱最明显的差异~ 明媚的午后阳光下,庭院里白色长餐桌两旁,英俊的少爷们彼此 交换着最近的趣闻轶事,一面欣赏女仆酱以1/3几率打翻茶水,可爱而笨笨地努力侍奉着,闪闪发光的样 子. 人间极乐喵~~~~~~~~~~ :3 但距离真正的自由~~无Lock还是很远,很远. 因为, 老爷和少爷的调教仍然是一如既往的频繁

游戏大厅从基础开始(6)--绕回来细说聊天室(中)之女仆编年史1

上一篇我们大致的了解了几种聊天室的行为模式 最简单明了的推模式 几乎不需要任何多余的 语言来描述它的实现 这一篇我们看看如何实现拉模式更有效. 本图清晰的表现了 "拉"模式聊天室的行为. 并发多用户向数据池写数据 并发多用户从数据池读 书据 数据最好以时间为顺序储存在集合中 某时间向后的枚举查找将是最大的消耗. 聊天室进化 -女仆编年史神秘的原始社会 仍然参考我们神奇朴素的Asp3聊天室 53 Application.lock 54 Application("show5&qu