标签:des http io ar os 使用 sp on 数据
客户端想要与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的方法(非优化的)
onEntityEnterWorld
	
	entity进入世界, entity第一次在cellapp上的被创建
onEntityLeaveWorld
	
	entity离开世界了(非优化的)
onEntityLeaveWorldOptimized
	
	entity离开世界了(优化的)
onEntityEnterSpace
	
	entity进入空间了(进入了cellapp中的场景或者副本房间等)
onEntityLeaveSpace
	
	entity离开空间了
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
		请求登录loginapp
	importClientMessages
		请求从loginapp导入引擎协议
	importServerErrorsDescr
		请求导入服务端错误描述表
	reqAccountResetPassword
		请求重置账号的密码
	reqCreateAccount
		请求创建账号
baseapp:
	hello
		客户端请求与baseapp握手
	onClientActiveTick
		客户端向服务端发送tick心跳
	loginGateway
		请求登录网关baseapp
	importClientMessages
		请求从baseapp导入引擎级协议
	importClientEntityDef
		请求从baseapp导入脚本定义产生的协议
	reLoginGateway
		请求重登陆baseapp(断线重连)
	reqAccountBindEmail
		请求绑定账号E-MAIL
	reqAccountNewPassword
		请求账号新密码(忘记密码类功能)
	onUpdateDataFromClient
		更新客户端数据到服务端(player的位置,朝向等)
	onRemoteMethodCall
		客户端请求调用服务端baseapp-entity方法
	onRemoteCallCellMethodFromClient
		客户端请求调用服务端cellapp-entity方法
 标签:des http io ar os 使用 sp on 数据
原文地址:http://www.cnblogs.com/txbabys/p/4137048.html