其实KTM的第五版,即实现自定义字节流协议的KTM,我早在半个月前就已经搞定了,但是由于最近在研究Android手机端的Socket通信编程,便无暇顾及博客。
今晚,由于KTM即时通信软件在Android手机端的开发有了全新突破,我可以稍作调整,于是,抽出时间完成对两个星期前的任务的总结。
实现自定义字节流协议的KTM在功能上较之实现自定义xmpp协议的KTM主要有三方面的提升。一是增加了注册的功能,简单的说就是用到了数据库,在用户注册成功的时候,服务器会分配给用户一个KTM号,这样整个流程就更加人性化了;二是增加了文件传输的功能,客户端与客户端之间,服务器与客户端之间都可以发送文件大小适中的各类文件;三是增加了远程控制的功能,目前只实现了客户端远程控制服务器,即服务器先向客户端发出远程协助申请,客户端确认后便可以控制服务器端的主机,客户端控制客户端的原理和客户端远程控制服务器的原理是一样的,我打算将这些功能在日后完善,目前就不耽误开发新功能的时间了。
当然,在我看来,实现自定义字节流协议的最大优势不是功能的增加,而是可以实现跨平台的通信,确切的讲是开发平台。比如说,服务器用的是Java语言开发的,而客户端是用C++语言开发的,对于xmpp协议的KTM来说,便无法实现通信,而字节流协议的KTM可以做到这点,只要协议制定的合理,便能很流畅的进行通信。
因为我把主要经历放在了提升功能上,所以界面没有太大变化,实现发送文件的功能只加了一个按钮,实现远程控制时也只增加了一个菜单项,所以下面我就仅仅展示一下协议的具体内容:
KTM自定义字节流协议
一条消息=消息头+消息体
Message=MessageHead+MessageBody
一、消息头类(所有其他消息的父类):
0、消息头(MsgHead)
字段名 数据类型 字节数 描述
TotalLen int 4 一条消息的字节总长(包含消息头长度)
type byte 1 消息类型标志
dest int 4 消息目的地,为消息接收者的KTM号,服务器的KTM号统一为0
src int 4 消息源,为消息发送者的KTM号,服务器的KTM号统一为0
备注 所有消息的消息头格式都是固定的
二、其他消息类(消息头类的子类)的消息体:
1、注册请求消息(MsgReg)
字段名 数据类型 字节数 描述
name String 10 注册用户昵称
pwd String 10 注册用户密码
备注 用户注册时,消息头中的dest值为服务器KTM号
2、注册应答消息(MsgRegResp)
字段名 数据类型 字节数 描述
result byte 1 服务器返回的注册结果应答
备注 若result为0,则消息头中的dest值为注册成功KTM号;非0则注册失败
3、登录请求消息(MsgLog)
字段名 数据类型 字节数 描述
pwd String 10 登录用户的密码
备注 用户登录时,消息头中的dest值为服务器KTM号,src值为用户的KTM号
4、登录应答消息(MsgLogResp)
字段名 数据类型 字节数 描述
result byte 1 服务器返回的登录结果应答
备注 0:成功 1:账号错 2:ip验证失败
5、上线消息(MsgOnline)
字段名 数据类型 字节数 描述
name String 10 消息源的用户昵称
备注 消息头中的src字段为上线人的KTM号,后由服务器转发给其他在线用户
6、在线用户表消息(MsgOnlineUsers)
字段名 数据类型 字节数 描述
userCount int 4 当前在线用户个数
userNames String 总长-消息头长(13)-4 所有在线用户的昵称和KTM的字符串集
备注 userNames的格式:用户1昵称(用户1KTM号),用户2昵称(用户2KTM号),。。。
7、聊天消息(MsgChat)
字段名 数据类型 字节数 描述
name String 10 消息源的用户昵称
content String 总长-消息头长(13)-10 聊天的消息内容
备注 聊天的消息内容在发送前由字符串转化为字节数组
8、文件传输消息消息(MsgFile)
字段名 数据类型 字节数 描述
fileNameSize byte 1 传送的文件名的大小
fileName String fileNameSize 传送的文件名字
fileData String 总长-消息头长(13)-fileNameSize 文件内容
备注 发送的文件大小有限制
9、服务器踢人消息(MsgHead)
无消息体
备注 消息头中的dest字段为服务器踢掉的用户的KTM号
10、下线消息(MsgLogOff)
字段名 数据类型 字节数 描述
name String 10 消息源的用户昵称
备注 消息头中的src字段为下线人的KTM号
11、远程控制请求消息(MsgControl)
字段名 数据类型 字节数 描述
name String 10 消息源的用户昵称
备注 用户请求远程控制时,消息头中的dest值为想要控制的用户的KTM号或者服务器KTM号,src值为用户的KTM号
12、远程控制应答消息(MsgControlResp)
字段名 数据类型 字节数 描述
result byte 1 服务器返回的远程控制结果应答
备注 0:成功 1:被拒绝
13、截屏消息(MsgScreen)
字段名 数据类型 字节数 描述
screenData byte[] 总长-消息头长(13) 截屏字节数据
备注
14、鼠标移动消息(MsgMouseMove)
字段名 数据类型 字节数 描述
x int 4 鼠标点的横坐标
y int 4 鼠标点的纵坐标
备注 控制端的鼠标一移动便立即发送该消息给被控制端
15、鼠标按键按下消息(MsgMousePress)
字段名 数据类型 字节数 描述
button int 4 鼠标的按键类型
备注 控制端的鼠标按键一按下便立即发送该消息给被控制端
16、鼠标按键释放消息(MsgMouseRelease)
字段名 数据类型 字节数 描述
button int 4 鼠标的按键类型
备注 控制端的鼠标按键一释放便立即发送该消息给被控制端
17、鼠标滚动消息(MsgMouseWheel)
字段名 数据类型 字节数 描述
button int 4 鼠标的按键类型
备注 控制端的鼠标一滚动便立即发送该消息给被控制端
18、鼠标拖动消息(MsgMouseDrag)
字段名 数据类型 字节数 描述
x int 4 鼠标点的横坐标
y int 4 鼠标点的纵坐标
备注 控制端的鼠标一拖动便立即发送该消息给被控制端
19、键盘按键按下消息(MsgKeyPress)
字段名 数据类型 字节数 描述
key int 4 键盘的按键类型
备注 控制端的键盘按键一按下便立即发送该消息给被控制端
20、键盘按键释放消息(MsgKeyRelease)
字段名 数据类型 字节数 描述
key int 4 键盘的按键类型
备注 控制端的键盘按键一释放便立即发送该消息给被控制端
21、远程控制中断消息(MsgControlStop)
无消息体
备注 用户中断远程控制时,消息头中的dest值为正在被控制的用户的KTM号或者服务器KTM号,src值为用户的KTM号
分享到:
相关推荐
NULL 博文链接:https://javaprince.iteye.com/blog/958446
【网络通信基础第六式——功能完善界面美化的KTM】是一个关于软件开发的主题,主要探讨的是如何提升网络通信工具的功能性和用户体验。在这个过程中,KTM(可能是“Kernel Traffic Manager”或者自定义的缩写)被用作...
VMware vSphere是一款由VMware公司推出的云数据中心虚拟化套件,它提供了全面的虚拟化基础设施、高可用性、集中管理和监控功能。vSphere的核心目标是通过虚拟化技术提高数据中心的效率和可靠性,同时降低运营成本。...
KTM OM-2分体式浮动球阀是一种机械装置,主要用于流体控制。它由球形阀体和两个端口组成,球体在两个密封面上转动,从而实现阀门的开关操作。该型号的球阀具备软阀座、高温阀座和金属阀座三种类型的阀座,以适应不同...
【KTM200编程器软件最新版】是一款专为汽车数据编程设计的专业工具,尤其适用于福哥KT200编程器一代。该软件的版本号为20230203,这意味着它是最新的更新,包含了最新的功能优化和可能的bug修复,确保用户在进行汽车...
KTM 的AT命令文档,收集的哦,大家可以看看的哦,感谢阅读哦
#### 五、KTM气动球阀选型指南 1. **确定工作条件**:首先需要了解应用环境的具体情况,如介质类型、工作压力、温度范围等。 2. **选择合适的尺寸**:根据管道直径及流量需求确定球阀的通径大小。 3. **确认...
5. **用户友好**:直观的用户界面和多种通信接口使得设置和调试变得简单易行,降低操作难度。 6. **坚固耐用**:设计紧凑,结构坚固,能在各种恶劣环境下稳定工作,延长设备使用寿命。 在实际应用中,KTM色标...
Chapter 1: Introduction to the MIPS32® 74KTM Core Family ............................................................ 23 1.1: 74KTM Core Features.........................................................
Wallace&Tiernan®气体投加系统V10KTM加氯机是一款专为市政和工业水处理领域设计的消毒气体投加系统,该产品采用了独特且多功能的墙挂安装配置,为操作人员提供了方便、稳定的控制平台。V10KTM加氯机的主要特点包括...
不错噢的,关于KTM的一些字体和语言知识,大家可以学习下哦
这些研究强调了高效处理器和先进通信协议(如CAN总线)在实现灵活、高性能控制系统中的关键作用。 总的来说,MIPS科技的MIPS32 1004KTM多线程多处理器IP核是对嵌入式市场的一次重大突破,它将推动嵌入式计算性能的...
KTM球阀维修手册中文版资料.pdf
德国西克KTM色标传感器选型手册pdf,德国西克KTM色标传感器选型手册:本文档是德国西克KTM色标传感器的选型手册,其中包括了对产品的概述。给客户带来的效益、技术参数、产品尺寸、连接方式和接线图、相关配件的挑选...
`ktm_big.jpg`和`ktm_small.jpg`是两张图片文件,代表了大图和小图。在放大镜效果中,小图是页面上显示的原始图片,而大图则用于提供放大部分的高分辨率细节。当用户将鼠标移动到小图上时,放大镜会显示大图对应位置...
根据所提供的文件内容,我们可以提炼出以下知识点: 1. MIPS科技:文件提到MIPS科技宣布推出了一款...这些知识点对于理解当前IT行业在处理器设计、无线通信网络以及便携式设备等领域的发展现状具有重要的参考价值。
微波混频器是微波集成电路接收系统中的关键组件,广泛应用于微波通信、雷达、遥控、遥感、侦察与电子对抗以及多种微波测量系统。混频器的主要功能是将接收到的微波信号转换到中低频进行处理,以便后续电路能更有效地...