kbengine通讯协议
通讯协议格式
客户端想要与KBEngine进行通讯需要与KBEngine使用相同的协议,KBEngine通讯协议分为如下两种类型:
确定长度类型:
|-----------------------------------------------------------------|
Packet = | Len: 2Bytes | Len: N || (Message-ID: uint16) | (Message-Body: Binary-stream) ||-----------------------------------------------------------------|
不固定长度类型:
|--------------------------------------------------------------------------------------------|
Packet = | Len: 2Bytes | Len: 2Bytes | Len: N || (Message-ID: uint16) | (Message-Length: uint16) | (Message-Body: Binary-stream) ||--------------------------------------------------------------------------------------------|
(注意: 如果消息长度超过65534,Message-Length固定被填充为65535,协议层会在Message-Length区段之后再额外增加4字节,来描述更大的长度信息)(注意: 测试协议请关闭数据包加密, 修改kbengine.xml或kbengine_defs.xml->channelCommon->encrypt_type)
举列一:
void client_funcXX(uint8 p1, int64 p2)......void server_funcXXX()packet.newMessage(ClientInterface::client_funcXX);packet.writeUint8(1);packet.writeInt64(1);|--------------------------------------------------------------------------------|
Packet = | Len: 2Bytes | Len: 1, 8 || (Message-ID(client_funcXX): uint16) | (Message-Body: p1, p2) ||--------------------------------------------------------------------------------|
举列二:
void client_funcXX(uint8 p1, int64 p2, string p3)......void server_funcXXX()packet.newMessage(ClientInterface::client_funcXX);packet.writeUint8(1);packet.writeInt64(1);packet.writeString("123456");|--------------------------------------------------------------------------------------------|
Packet = | Len: 2Bytes | Len: 2Bytes | Len: 1, 8, 7 || (Message-ID: uint16) | (Message-Length: uint16) | (Message-Body: p1, p2, p3) ||--------------------------------------------------------------------------------------------|
对接服务端引擎级协议
以下协议为客户端需要提供给服务端调用的协议:
onVersionNotMatch引擎版本不匹配onScriptVersionNotMatch脚本版本不匹配onKicked客户端被服务端踢出onImportServerErrorsDescr导入服务端错误码描述表回调onImportClientEntityDef导入服务端entitydef描述表回调onImportClientMessages导入客户端协议表回调onHelloCB与服务端握手回调onLoginFailed登录loginapp失败了onLoginSuccessfully登录loginapp成功了onLoginGatewayFailed登录baseapp失败了onReLoginGatewayFailed重登录baseapp失败了onCreatedProxies服务端通知客户端创建一个能与服务端通讯的代理实体onUpdatePropertysOptimized更新entity属性(优化的)onUpdatePropertys更新entity属性(非优化的)onRemoteMethodCallOptimized服务端调用entity的方法(优化的)onRemoteMethodCall服务端调用entity的方法(非优化的)onEntityEnterWorldentity进入世界, entity第一次在cellapp上的被创建onEntityLeaveWorldentity离开世界了(非优化的)onEntityLeaveWorldOptimizedentity离开世界了(优化的)onEntityEnterSpaceentity进入空间了(进入了cellapp中的场景或者副本房间等)onEntityLeaveSpaceentity离开空间了onCreateAccountResult创建账号返回结果initSpaceData当entity进入某个空间后,服务端初始化空间数据setSpaceData服务端设置空间数据delSpaceData服务端删除空间数据onEntityDestroyed某个entity销毁了onUpdateBasePos服务端更新客户端player基础位置(x, y, z)onUpdateBasePosXZ服务端更新客户端player基础位置(x, z)onSetEntityPosAndDir服务端设置客户端player位置和朝向onUpdateData_***服务端更新客户端player位置(x, y, z)或朝向(yaw, pitch, roll)onStreamDataStarted流数据开始下载(streamFileToClient, streamStringToClient)onStreamDataRecv接收到流数据onStreamDataCompleted流数据下载完成onReqAccountResetPasswordCB请求重置账号密码回调onReqAccountBindEmailCB请求绑定账号E-MAIL回调onReqAccountNewPasswordCB请求账号新密码回调(忘记密码类功能)
以下为服务端允许客户端调用的协议:
loginapp:hello客户端请求与loginapp握手onClientActiveTick客户端向服务端发送tick心跳login请求登录loginappimportClientMessages请求从loginapp导入引擎协议importServerErrorsDescr请求导入服务端错误描述表reqAccountResetPassword请求重置账号的密码reqCreateAccount请求创建账号baseapp:hello客户端请求与baseapp握手onClientActiveTick客户端向服务端发送tick心跳loginGateway请求登录网关baseappimportClientMessages请求从baseapp导入引擎级协议importClientEntityDef请求从baseapp导入脚本定义产生的协议reLoginGateway请求重登陆baseapp(断线重连)reqAccountBindEmail请求绑定账号E-MAILreqAccountNewPassword请求账号新密码(忘记密码类功能)onUpdateDataFromClient更新客户端数据到服务端(player的位置,朝向等)onRemoteMethodCall客户端请求调用服务端baseapp-entity方法onRemoteCallCellMethodFromClient客户端请求调用服务端cellapp-entity方法
转载于:https://www.cnblogs.com/txbabys/p/4137048.html
kbengine通讯协议相关推荐
- xk3190串口通讯JAVA开发包_常用品牌plc通讯协议汇总学习
一.美系厂家Rockwell ABRockwell的PLC主要是包括:PLC2.PLC3.PLC5.SLC500.ControlLogix等型号,PLC2和PLC3是早期型号,现在用的比较多的小型PL ...
- 西门子smart200以太网通讯协议
西门子smart200具体的通讯文档在网上或者官网我都没有找到(哪位大仙有请给我留言发个感激不尽),本人是通过监听控制软件分析出其中的通讯协议. 连接是通过TCP/IP协议,我一般喜欢用Java写测试 ...
- ntrip获取源列表_Ntrip通讯协议怎么样?
1 什么是Ntrip? CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据.用户访问CORS后,不用单独架设GPS ...
- AMF3通讯协议实例
为什么80%的码农都做不了架构师?>>> 服务端: import java.io.BufferedOutputStream; import java.io.BufferedRe ...
- 上下位机通讯协议_上位机与下位机的区别通讯
上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等).下位机是直接 ...
- 2017-2018-1 20155327 实验五 通讯协议设计
2017-2018-1 20155327 实验五 通讯协议设计 实验一: 实验要求: 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中 ...
- 2018-2019-1 20165212 实验五 通讯协议设计
2018-2019-1 20165212 实验五 通讯协议设计 OpenSSL简介 OpenSSL是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功能以及 ...
- 网络编程2_网络通讯协议, socket(tcp, udp)
一. 网络通讯协议 互联网协议的功能: 定义计算机如何接入internet, 以及接入internet的计算机的通信标准 互联网协议按照功能的不同分为osi七层或tcp/ip五层 ...
- php连接plc,PLC 几种常见的连接口和通讯协议
四.ProfiBus 通讯作为众多现场总线家族的成员之一ProfiBus是在欧洲 工业界得到最普遍应用的一个现场总线规范,也是目前国际上通用的现场总线规范之一.ProfiBus是属 于单元级.现场级的 ...
最新文章
- 图很难理解?看这篇图论基础与图存储结构就够了
- CactiEz 无法登陆 、重启不画图处理
- 想成为优秀的管理者,不能不知道的决策方法
- CodeIgniter的快速操作
- idea教程--Maven 骨架介绍
- 国贸专业要考计算机二级,国贸专业考计算机二级有没有必要
- 中国国家高速公路网详细布局
- 彩虹云任务极致精简版--PHPcron程序
- Mysql中的delimiter详解
- 二叉树进阶之平衡二叉树的判断
- c语言全段字符的类别,中兴LTE试题-1
- 【js】碰到了Flash与extjs冲突无法输入中文解决办法。
- 游戏开发流程之完整指南
- android播放3gp格式,Android – 无法播放任何视频(mp4 / mov / 3gp /等)?
- C++ 炼气期之基本结构语法中的底层逻辑
- Rxswift学习之(一)函数响应式编程思想
- java ssh 服务器文件传输_java使用SFTP上传文件到资源服务器
- 初识C语言#define、指针、结构体
- springboot红色吕梁网站的设计与开发毕业设计源码150923
- (Modern Family S01E01) Part 11 PhilClair Luke和Phil打篮球 总
热门文章
- 【HDU - 1026 】Ignatius and the Princess I (bfs + 记录路径)
- 【POJ - 3494】Largest Submatrix of All 1’s(加一点思维后化成 单调栈)
- drupal mysql_Drupal MySQL查询优化
- java ssh pdf_JavaSSH框架技术规范.pdf
- mysql linux环境安装_MySQL Linux环境的安装配置
- python的代码复用技术_Python__函数和代码复用
- 【算法系列之九】合并两个有序数组
- leetcode31. 下一个排列
- leetcode108 将有序数组转换为二叉搜索树
- (二)容器从入门到深入-初识Kubernetes