服务器架构(二)

昨天拿到数据 Controllerl里的数据

Server相当于GameMan一个中间的转折数  谁都可以调用它  


今天任务

枚举类型里面的值(不修改的话从第一个开始排序 int类型的)

不应该这么拆

 

 从第4位开始截取 就是requestCode

 第三段数据从第八为开始截取

具体的数据,因为传来的是字符串,还得转换,第12位开始截取,截取到总的减去8  数据长度代表:

通过message解析出来了,所以都爱Controllermessage里去获取,Messages是一个工具类,它最好不要去调用其他的方法,所以给它一个回调的方法

 

server 里面是所有的功能:

 

 要把它传入到 :

 

 

添加一个回调的方法:
//传入 RequestCode ActionCode 

需要Common的命名空间的引用

 

 用委托 :

 

拿到三个数据后 去调用

 

参数是一个委托 把三参数传入   把这个方法

 

那个方法放入委托
委托里面存入的是方法的地址: 类似于指针

 client 就是this

 

 以上就是进入的顺序

以下是传出 

发送给客户端  客服端 的发送方法:

 

 要发送这两个消息 把他 打包成一个数组 发送 

再添加一个打包方法 

把他两转为数组 再把长度加一起 再转换为长度

第一个是 RequestConde的数组
第二个是 data的数组
定义个装 他两个数组长度之和  
再把长度转换为数组
把三个数组 链接在一起 ,第一段是长度+RequestCode+dataByte,再

 


当我们发送消息的时候  把需要打包的内容传入打包方法:
得到最终发送的数据

 

 给客户端发送消息

 

 

 在服务段里 是Client 里的发送

 

现在解决了 这个

 

 

现在要用数据库 

添加一个新的数据库

 

跟数据库链接  用这个去链接

 

 

 添加一个新类:

链接数据库 

 

 因为在链接数据库的时候账户密码步改变 所以定义为常量
常量一般都是大写

这个是IP地址,用本机的地址127.0.0.1

 

 端口号 数据库名字 用户名字 用户的密码 
这个地方大小写 都没有问题

先去引用这个

 

 数据库去链接了 是个工具类 静态 的方法

1.去链接
2.链接上去开启

 

链接上就打开 
失败 返回null

 

关闭链接的方法:
告诉关闭哪一个链接

 

如果不等于 的时候关闭 
等于到时候 没有这个链接 就提示

它什么时候去建立链接???

 只要有客户端 就去链接

 

在Cllent里面添加 一个 数据库的实例化
直接去调用方法
打开链接的时候

 

 客户端 关闭的时候 数据也关闭

跟数据的这一快的链接方式 基本上完成了,服务器这一块儿就先到这里  

接下来写客户端信息

用到这两个东西来写UI框架:

 

 **************************************************下午**********************************
客户端在Unity里面完成

 

ui框架的原理 把Pnael存入json里面 通过读的方式读取出来

在线画流程图网址:

 



1.需要一个脚本控制总流程的启动 所有功能的控制

 UImanger :控制所有UI
CameraManger:控制所有相机
AudioMnanger:音乐
PlayerManger:控制人物的
RequestManger:控制发送消息

 以上这些统一继承一个管理类(BaseMAnger)

 GameFacade:项目的总负责人
因为是联网的游戏:进行链接的管理脚本(ClientManger)
客户端的流程:

先创建一个总的控制脚本

 

再创建一个BaseManger

因为 BamdeManger 被GamerFacde管 所以步用继承 Magerhavir

 

创建构造函数的时候 将总游戏传入 

所有Manger添加两个方法 初始化 销毁的方法


该UIManger里的东西 

不需要单列 

 

继承父类的东西

 

 再创建 PlayerManger 

再创建一个处理请求的脚本:

 

再创建一个ClientManger:


运行的时候   

 

 运行的时候 得把所有脚本初始化:在GameFacde里面:

 

 初始化所有manger方法:

 

开始把所有Manger实例化出来:
把自己传入到其他脚本的方法 里 参数就是this

 

 

还需要调用每一个 Manger的方法

 

 

再添加 一个被关掉 活着被删除 的 时候的方法:

系统自带 的方法里调用 自己创建的方法

 

通过CliectManger 来连接服务器

需要本地,
服务器ip,端口号 

用socket  需要Socket

 

在服务器里创建 iP 端口号

 服务器开始的时候与服务器建立连接

 

与服务器建立连接

建立的时候 把ip端口传入
没有连接就输出宏的

删除的时候,或者关闭的时候:

现在写客户端的发送 客户端往服务器发送 
带有RequestCode与actioCode 的数据 

所以直接复制 Message脚本
不需要继承:


这种需要修改

属性 改一下 
类库的方式 是服务器与客服端通用:
生成-》

把这个 放UNIty

Unity的版本和vs不一样 改版本

 

 

 

Unity支持的最高。ne是3.0

 

 

先去从客户端发送消息给服务器 

再给它来一个打包的方法进行重在

向服务器发送消息方法:需要requettCode actionCode 就需要应用Commn=on

往服务器发送消息:

 

从服务器接收消息:

需要拿到 masgManner 
l连接成功的时候

去接收服务器的消息:
第一个存入data 里面 从哪里开始存 存多长 sicket  回调函数

 

需要这个引用那个是System

 

如果count为0;

 

 

 

 

BaseQuest  接收与发送 

所有的request都需要继承它 所以添加虚函数


创建一个字典 存放所有值 
根据RequestCode 来区分,所以建都是ResquestCode 值是

 


添加到字典里的方法:


谁去做添加Reuquest的事情呢 ??

创建一个 就加入字典里面 每个脚本都事实检测 在BaseRequest里添加
它要拿里面东西不可以拿到 就同各国 

 

把GameFacade做成单列 ,因为它继承了

所以做成伪单利:

如果不等于null ,就删除



直接调用:

这个是添加

 

 还需要移除 删除的时候就是要建就可以;

 

 

 


所有 被删除的时候 它继承了model  所以用系统方法

 

 把得到的具体 服务器发送的消息是存放再这里的

 

客户端接收消息后 给REquetstManger
里面添加处理响应的方法:

 

通过字典找 返回具体的某一个requestCode
没有找到

如果找到的话 直接 

 

因为这俩个同级 不能调用 

 

所以要这个里面有同样方法



ClientManger去用GameFaser 里的东西 

先改这个

拿到参数


)))))))))))))))
脚本之间的调用顺序:

 



 


 

 

 

 



 

posted @ 2018-11-27 10:55  白纸菇凉  阅读(288)  评论(0编辑  收藏  举报