tick与客户端数据协议规范.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
与客户端数据协议规范后更新) 数据包构成 OG1的例子 0017SOH10SOHSOHOG1SOH3SOH1SOH0024SOH10SOHSOHSSOH000 001SOH1000SOHEOT 协议规范定义了,客户端与本服务器间的通讯数据格式,目前考虑的网络协议采用 TCP方式 考虑到客户端处理数据包的方便性,包结构的设计尽量考虑简单一些,这样牺牲了一些效率,但带 来了方便。 每个包分为两部分 包头(这里里包头不是 TCP/IP的包头) 包内容 包头结构: 定义:域间隔符为: SOH=chr(1),包结束符为:EOT=chr(4)包后续标志为:ETX=chr(3) 包头长度SOH 指令序号SOH 保留SOH 指令SOH 数据列数SOH 数据行数SOH 解释:每个域的格式都是字符窜形式。 包头长度:固定 4个字节,包头的总长度(字节) (鼓最大为9999字节) 指令序号:按顺序生成的,每产生一个新的指令,就产生一个相应的序号,请求包和应答 包有相同的指令序号, 指令序号用来标志传送的包所从属的指令, 在数据包过 大,必须分包传送时,须保持指令序号一致,否则应用将无法保证指令数据的 完整生成。 由于客户端和服务器端都有可能发起指令, 二者使用的序号如何避免重复呢? 目前采用简单的分段方式,即:客户端生成的包在 (1-99999)循环使用 而服务器的包在(100001-199999 )循环使用 保留:目前可以留空不填,为安全等因素考虑保留 指令:固定3字节,表示系统特定的指令,具体指令见指令表 数据列/行数:每个指令的数据都可以看作一个二维表。数据列数必须给出,但数据行数 却可以指定为 0,数据行数为0的情况,表示数据的行数无法确定,必须读到包 内容的 EOT 才能结束 包内容结构: 包长度 SOH 指令序号 SOH 保留 SOH 数据(1,1) SOH 数据(1,2)SOH ……?数据(1,n) SOH 数据(2,1) SOH 数据(2,2)SOH ……?数据(2,n) SOH 数据(m,1) SOH 数据(m,2)SOH ……?数据(m,n) SOH EOT 对于包长度过大 (9999)的数据包,则需要分包传送: 只须在每个包的结尾,将包结束标志替换为后续标志,形式如下: 包长度 SOH 指令序号 SOH 保留SOH 数据(1,1) SOH 数据(1,2)SOH ……?数据(1,n) SOH 数据(2,1) SOH 数据(2,2)SOH ……?数据(2,n) SOH 数据(k,1) SOH 数据(k,2)SOH ……?数据(k,n) SOH ETX 后续包可以有多个: 包长度 SOH 指令序号 SOH 保留 SOH 数据(k+1,1) SOH 数据(k+1,2)SOH ……?数据(k+1,n) SOH 数据(k+2,1) SOH 数据(k+2,2)SOH ……?数据(k+2,n) SOH 数据(l,1) SOH 数据(l,2)SOH ……?数据(l,n) SOH ETX 包长度 SOH 指令序号 SOH 保留 SOH 数据(p,1) SOH 数据(p,2)SOH ……?数据(p,n) SOH 数据(p+1,1) SOH 数据(p+1,2)SOH ……?数据(p+1,n) SOH 数据(m,1) SOH 数据(l,2)SOH ……?数据(m,n) SOH EOT 由于我们利用的是 TCP协议,包传送中的丢包问题已经在传诵层解决了, 无须再考虑中间的丢包问题, 指令定义: 系统保留: 第一位 S保留为系统内部使用。 SQL:客户端的SQL调用 由客户端发送到服务端,直接调用 SQL主要为了简化哪些与服务端关系不大的数据存储,数据获取 等调用,这样的调用可以简化服务端程序的编写,不用改写大量的代码。 项目 值 备注 指令 SQL 数据列数 调用时确定 数据行数 1 以下为数据列说明 1 UID 用于客户端异步调用确定返回 的UID Str型 2 TYPE 1、 直接的SQL指令 2、 存储过程 3 SQL指令 若type=1则为SQL串 type=2则为存储过程名 4 参数1类型 右为存储过程,依次放类型和参 数值 参数类型用于确定存储过程调 用中是否加引号 C字符型 N非字符型 5 参数1值 6 参数2类型 7 参数2值 RQ1:客户端的SQL调用结果返回 由服务端发送到客户端,直接调用 SQL结果返回,用于标记调用是否成功。 项目 值 备注 指令 RQ1 数据列数 3 数据行数 1 以下为数据列说明 1 UID 用于客户端异步调用确定返回 的UID Str型 2 RETCODE 0:调用失败 1:调用成功 3 MSG 返回信息,主要是错误时返回错 误信息 4

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档