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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle中exp的使用2

在使用exp的时候,需要注意以下几点当前客户端版本、目标客户端的版本、注意需要设置字符集,也就是NLS_LANG 参考oracle字符集的设置NLS_LANG格式为:[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET].NLS_LANGUAGE指的是Oracle消息使用的语…

shell 编程(难题分析)

一、基础知识:http://www.aminglinux.com/bbs/thread-6833-1-1.html 一、grep用grep把passwd文档中包含root或者‘500’的行过滤出来,并在过滤出来的行前面加上行号.grep -n root\|500 passwdr.o 如r1o,rto都满足该条件,.表示匹配…

阿里云rds升级mysql8_为更强大而生的开源关系型数据库来了!阿里云RDS for MySQL 8.0 正式上线!...

2019年5月29日15时,阿里云RDS for MySQL 8.0正式上线,使得阿里云成为紧跟社区步伐,发布MySQL最新版本的云厂商。RDS for MySQL 8.0 产品是阿里云推出的 MySQL 系列云产品之一,使用完全兼容 MySQL 8.0 的阿里云 AliSQL 8.0 分支&am…

Log4net 列

配置<configuration> <configSections> <section name"log4net" type"System.Configuration.IgnoreSectionHandler"/> </configSections><log4net> <!--定义输出到文件中--> <appender name"LogFileAppender&…

分布式系统的开发经验与心得

与近期与InfoQ的一次对话中&#xff0c;Vaughn Vernon分享了一些他在开发分布式系统方面的心得。他特别指出&#xff0c;在分布式系统中&#xff0c;有可能会出现局部故障之类的问题。对于这种类型的问题以及一些其它挑战来说&#xff0c;最佳的应对方式是做好一切准备&#xf…

mysql gtid 还是pxc_记一次 PXC 集群拆分引发的思考

原标题&#xff1a;记一次 PXC 集群拆分引发的思考作者简介冷正磊2018年2月加入去哪儿网 DBA 团队&#xff0c;主要负责机票业务的 MySQL 和 Redis 数据库的运维管理工作&#xff0c;以及数据库自动化运维平台部分功能的开发工作&#xff0c;对数据库技术具有浓厚兴趣&#xff…

一个奇怪的注意事项TNS-12545 TNS-12560 TNS-00515

近来的reportDB无法从一开始就与系统收听&#xff0c;比较奇怪的现象。由于server有听众的一个实例上正常启动&#xff0c;这是不是从开始监听器的实例手动启动是正常的。所以写下来未能找到离奇写的原因。1、故障现象Starting CRON daemondone Oracle 10g auto start/stop Sta…

java_IO总结(一)

所谓IO&#xff0c;也就是Input与Output的缩写。在java中&#xff0c;IO涉及的范围比较大&#xff0c;这里主要讨论针对文件内容的读写 其他知识点将放置后续章节&#xff08;我想&#xff0c;文章太长了&#xff0c;谁都没耐心翻到最后&#xff09; 对于文件内容的操作主要分为…

mysql两张表联查更新语句_sql联合查询语句(两张表)

展开全部sql联合查询语句(两张e69da5e6ba9062616964757a686964616f31333365643662表)是&#xff1a;select A.ID,A.VALUE,A.TYPE,A.NAME,B.KEY,B.ID,B.VALUE,B.NAMEmin(VALUE),max(VALUE) from A left join B on A.ID B.IDwhere B.NAME"你输入的名字"and B.VALUE &g…

TextField对象相关的属性和方法总结

TextField对象相关的属性和方法&#xff0c;内容十分丰富&#xff0c;下面几个表格&#xff1a; 表一 TextField 对象的方法 方法 说明 TextField.addListener 加入接收触发事件如文本域内容变化或滚动变化的监听对象&#xff0c;触发事件可以参看最后一个表。 TextField.getDe…

ocsng mysql connection problem_OCSNG 介绍及其工作原理

OCSNG部署&#xff1a;http://wowking.blog.51cto.com/1638252/994441OCSNG 是什么呢&#xff1f;OCSNG就是Open Computer and Software Inventory Next Generation是一款免费软件&#xff0c;它使用户能够盘点网络工程师的IT资产。OCS-NG收集有关运行OCS客户端程序(“OCS Inve…

hdu--5135--贪心

尽量选边数大的3根木棍来组成一个三角形 一直到无法选取为止 这边计算三角形面积 还是用 海伦公式比较方便 1 #include <iostream>2 #include <algorithm>3 #include <cmath>4 #include <cstring>5 #include <iomanip>6 using namespace std;7 …

动易sitefactory 数据库 mysql msssql_动易SiteFactory配置文件(web.config)常用配置节解读...

配置声明节复制代码代码如下:这个节定义了,web.config文件中将要用到具体配置节点的名称,处理程序等.从这里可以看出,siteFactory里采用.net 企业应用程序块(enterpriseLibrary),里的数据访问块等.urlrewritingnet,是用来进行地址重写的,接着是asp.net ajax 配置节声明,最后有个…

Struts2_2_第一Struts2应用

web.xml文件的配置与1同样。1&#xff09;HelloWorld类的代码&#xff1a; public class HelloWorldAction {private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message message;}public String execute() {…

centos7

一.CentOS下的JDK安装(jdk1.7.0.67) http://www.cnblogs.com/Jenny-sider/p/3898583.html 二.centos下 配置多个tomcat nginx绑定域名和ip http://www.cnblogs.com/Jenny-sider/p/3908254.html 三.centOS 7.0默认使用的是firewall作为防火墙 启动firewall systemctl start fire…

About SOuP

http://www.soup-dev.com - SOuP的强大我不必多说。 - Maya 也可以开发出象houdini这样有趣的节点&#xff0c;这再soup之前是很难想象的。所以说soup的作者Peter的NB之处就在这里&#xff0c;他给人们指出了挖掘Maya潜力的一条路。 - MayaAPI真的是已经把maya能扩展的接口都暴…

mysql 动态sql 解析json数据_在SQL 中生成JSON数据

这段时间接手一个数据操作记录的功能&#xff0c;刚拿到手上的时候打算用EF做&#xff0c;后来经过仔细考虑最后还是觉定放弃&#xff0c;最后思考再三决定&#xff1a;1、以模块为单位分表、列固定(其实可以所有的操作记录都放到同一个表&#xff0c;但是考虑到数据量大的时候…

Microsoft Edge 浏览器开始支持webkit私有样式

微软表示新版的浏览器Edge(spartan)不会再增加新的私有属性&#xff0c;同时移除了部分-ms-属性&#xff0c;但很多标准在没有支持到之前&#xff0c;会使用webkit的api。Edge开发工程师Jacob Rossi列出了一份Edge所支持的webkit api列表。 CSS Core webkitBackgroundwebkitBac…

cemtos7上mysql8两个实例_centos7上配置mysql8的双主互写

注意:1、主库1&#xff1a;10.1.131.75&#xff0c;主库2&#xff1a;10.1.131.762、server-id必须是纯数字&#xff0c;并且主从两个server-id在局域网内要唯一。【主节点1】vi /etc/my.cnf[mysqld]log-binmysql-binserver-id2019001log_slave_updates1重启服务service mysqld…

不属于python数据类型的是_Python不支持的数据类型有( )。

(2) 完成划线处的代码填空: Dim classname(1 To 8000) As String 存储原始数据中的班级名称 Dim selectabc(1 To 8000) As String 存储原始数据选项的值 Dim xiangmu(1 To 8000) As String 存储原始数据选项的序号 Dim n As Integer Private Sub Command…