通讯协议格式

客户端想要与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通讯协议相关推荐

  1. xk3190串口通讯JAVA开发包_常用品牌plc通讯协议汇总学习

    一.美系厂家Rockwell ABRockwell的PLC主要是包括:PLC2.PLC3.PLC5.SLC500.ControlLogix等型号,PLC2和PLC3是早期型号,现在用的比较多的小型PL ...

  2. 西门子smart200以太网通讯协议

    西门子smart200具体的通讯文档在网上或者官网我都没有找到(哪位大仙有请给我留言发个感激不尽),本人是通过监听控制软件分析出其中的通讯协议. 连接是通过TCP/IP协议,我一般喜欢用Java写测试 ...

  3. ntrip获取源列表_Ntrip通讯协议怎么样?

    1 什么是Ntrip? CORS(Continuously Operating Reference Stations)就是网络基准站,通过网络收发GPS差分数据.用户访问CORS后,不用单独架设GPS ...

  4. AMF3通讯协议实例

    为什么80%的码农都做不了架构师?>>>    服务端: import java.io.BufferedOutputStream; import java.io.BufferedRe ...

  5. 上下位机通讯协议_上位机与下位机的区别通讯

    上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等).下位机是直接 ...

  6. 2017-2018-1 20155327 实验五 通讯协议设计

    2017-2018-1 20155327 实验五 通讯协议设计 实验一: 实验要求: 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中 ...

  7. 2018-2019-1 20165212 实验五 通讯协议设计

    2018-2019-1 20165212 实验五 通讯协议设计 OpenSSL简介 OpenSSL是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法.常用的密钥和证书封装管理功能以及 ...

  8. 网络编程2_网络通讯协议, socket(tcp, udp)

    一. 网络通讯协议     互联网协议的功能: 定义计算机如何接入internet, 以及接入internet的计算机的通信标准     互联网协议按照功能的不同分为osi七层或tcp/ip五层    ...

  9. php连接plc,PLC 几种常见的连接口和通讯协议

    四.ProfiBus 通讯作为众多现场总线家族的成员之一ProfiBus是在欧洲 工业界得到最普遍应用的一个现场总线规范,也是目前国际上通用的现场总线规范之一.ProfiBus是属 于单元级.现场级的 ...

最新文章

  1. 图很难理解?看这篇图论基础与图存储结构就够了
  2. CactiEz 无法登陆 、重启不画图处理
  3. 想成为优秀的管理者,不能不知道的决策方法
  4. CodeIgniter的快速操作
  5. idea教程--Maven 骨架介绍
  6. 国贸专业要考计算机二级,国贸专业考计算机二级有没有必要
  7. 中国国家高速公路网详细布局
  8. 彩虹云任务极致精简版--PHPcron程序
  9. Mysql中的delimiter详解
  10. 二叉树进阶之平衡二叉树的判断
  11. c语言全段字符的类别,中兴LTE试题-1
  12. 【js】碰到了Flash与extjs冲突无法输入中文解决办法。
  13. 游戏开发流程之完整指南
  14. android播放3gp格式,Android – 无法播放任何视频(mp4 / mov / 3gp /等)?
  15. C++ 炼气期之基本结构语法中的底层逻辑
  16. Rxswift学习之(一)函数响应式编程思想
  17. java ssh 服务器文件传输_java使用SFTP上传文件到资源服务器
  18. 初识C语言#define、指针、结构体
  19. springboot红色吕梁网站的设计与开发毕业设计源码150923
  20. (Modern Family S01E01) Part 11 PhilClair Luke和Phil打篮球 总

热门文章

  1. 【HDU - 1026 】Ignatius and the Princess I (bfs + 记录路径)
  2. 【POJ - 3494】Largest Submatrix of All 1’s(加一点思维后化成 单调栈)
  3. drupal mysql_Drupal MySQL查询优化
  4. java ssh pdf_JavaSSH框架技术规范.pdf
  5. mysql linux环境安装_MySQL Linux环境的安装配置
  6. python的代码复用技术_Python__函数和代码复用
  7. 【算法系列之九】合并两个有序数组
  8. leetcode31. 下一个排列
  9. leetcode108 将有序数组转换为二叉搜索树
  10. (二)容器从入门到深入-初识Kubernetes