架构服务器(一)
在线版本的编辑:
--->工具类 去链接数据库 执行数据库的操作
————》检查数据库的数据 从数据库里拿东西
把拿出的数据存入:这个类里面
总 的流程图:
Mvc的设计模式:游戏的模式 代码分成三部分:
MVC的具体含义是:model+view+control,即模型+视图+控制它们各自处理自己的任务:
(1)模型:模型持有所有的数据、状态和程序逻辑。模型独立于视图和控制器。
(2)视图:用来呈现模型。视图通常直接从模型中取得它需要显示的状态与数据。对于相同的信息可以有多个不同的显示形式或视图。
(3)控制器:位于视图和模型中间,负责接受用户的输入,将输入进行解析并反馈给模型,通常一个视图具有一个控制器。
MVC模式将它们分离以提高系统的灵活性和复用性,不使用MVC模式,用户界面设计往往将这些对象混在一起。MVC模式实现了模型和视图的分离,这带来了几个好处。
(1)一个模型提供不同的多个视图表现形式,也能够为一个模型创建新的视图而无须重写模型。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地刷新自己。
(2)模型可复用。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。
(3)提高开发效率。在开发界面显示部分时,你仅仅需要考虑的是如何布局一个好的用户界面;开发模型时,你仅仅要考虑的是业务逻辑和数据维护,这样能使开发者专注于某一方面的开发,提高开发效率。
一、一个控制台程序:
1.便于管理 添加文件夹:
2.添加一个类:
先构建服务器:使用socket创建:
需要ip地址和端口号:
添加一个构造函数:实例化一个ip地址和端口号:
添加一个新方法,进行绑定:
启动服务器新方法:
需要new一个socket:
绑定,
监听
接收(异步接收,会回调一个函数,所以一个新方法)
na
拿到接收客户端的:
再创建一个新类 接收所有客户端:
给一个构造函数:
会有很多客户端:用list管理一下:
用Client实例化一个类:this代表本类,bace代表基类
客户端链接
当接收到服务器,下边开始监听客户端消息:
在client类里面 有一个新方法 :
监听客户端传过来的消息:通过beginRecive()
接收的数据长度,防止数据没有,用try catch:
关闭单独一个新方法:
Server添加一个移除客户端的方法:
为了防止争抢用:
使用lock的好处,第一个有人用,第二个来了就排队,等第一个用完,第二个再用
回到cLient:
上边是没有链接上的时候:
现在是接收到的时候:
需要把西消息解析:
需要把Message
开始监听:
存入了值:
再去监听:
到这一步了;
先创建一个所有controll的父类,改成一个抽象类
请求不同,controll就步同:
把所有的请求都放一个里面去,创建在Tools文件夹里面:
创建成一个类库:
总共两个请求
一个请求:使用那一个contrcoll
一个使用controll里面的什么方法:
实例化另一个解决方案:
错误的类库:父类里面添加一个虚函数:
、
发送的一段消息的长度:
requestCode找到类
AchonCode找到类里对应的方法:
添加一个新的Controll管理类:
存入一个字典,键 就是requestCode ,值就是basecotroll
构造函数:把东西初始化:
接收到具体消息: 在server类里面 实例化出来:进行所有请求分发:
把消息传入
ControllMangeeeer处理接收请求的方法:
传入信息
None:就是没有发送数据 或者是错误的数据:
先把错误的信息加入字典里面:
key是 recoustCode,值 是错误的Code:
假设已经拿到 先实例化一个类出来:
从一个字典里面找:
返回值是个bool值,就把这个值接收一下
如果找不到就什么也步用做,如果找到就
知道只是一个字符串,怎么去调用这个方法,设计到的知识是反射:
反射:不打开这个类的情况下,我能获取到类里的所有东西:
编译就是把高级语言转换为低级语言,
脚本语言:js loa... 不需要编译
热更新:事实看见东西 你修改的东西随意看:
找到对应类里的方法。所以反射:
ActionCode是枚举,把它转换为字符穿
在这个Controcoller里找到它的方法:
通过GETTYPE()这个方法 得到里面的方法:
调用完以后反射一个信息:
需要命名空间:
有时候 方法是有参数的
如果为null 就是没有找到这个 方法:
我们反射的是actionCode
所以方法名字 必须和它一样
如果没有就return
如果找到就返回值
定义一个Object类型的数组
再传一个值 需要把具体的数据传入 冰放入这个里面来:
传的时候 除了数据 还应该有服务器 客户端
如果有返回值 或者没有的情况
没有返回值:
有返回值 就的发送给客户端:
给这个方法,具体给客户端 返回 ruquerstCoder 数据