在系统开发过程中,如果涉及到了Socket通讯,那就要制定好通讯的协议,只有制定好了规则,后面的工作才方便顺利展开,制作通讯协议时要考虑到通讯的安全性,必要的信息要经过加密处理,同时也要考虑到系统的可扩展性,如果以后需要增加一个命令或者修改命令要保证这些工作能方便的进行。
协议的内容包括如下:
1. 本协议使用的字符串,如密码,位数为6位。
2. 通讯方式:TCP、UDP。本协议默认为TCP/IP方式。
3. 在线检测包、同步信息包,主要应用于TCP/IP长连接模式下,要求由终端(winform)发起,服务端作命令回馈。
实时信息包,主要应用于TCP/IP短连接模式下,要求由终端(webform)发起,服务端作中转站请求winform终端,然后原路命令反馈。
如下图:
Webform终端请求实时信息数据包前须先确认Winform终端已连接上中间服务器(Socket Server),Winform终端同步信息前须先连接Remoting Server,因此Winform终端会定时发送连接确认数据至Server
端,以确认其连接状态。
1. 终端分为webform终端和winform终端。
2. Winform终端定时(3min)发送在线确认数据包到Server,Server反馈数据包到Winform终端,如果接收反馈数据包超时(10s),则重新发送,连续五次接收反馈超时,则为离线状态,需重新连接Server端。
数据报协议格式
数据包:报文长度+帧头+终端编号+命令字+总帧数+第几帧+内容+校验+状态+帧尾
说明:
每条消息以0x00开始,以0xFF结尾。
每条消息只能发送一个命令字,每条消息的最长长度为1024(包括1024字节),超过1024的部分分批发送,以此循环。
读取数据时,内容默认为0x00。
终端编号以“K0000001“来举例
名称 |
数据包头 |
数据包内容 |
数据包尾 |
|||||||
含义 |
报长度 |
帧头 |
终端编号 |
7 |
总帧数 |
第几帧 |
内容 |
校验 |
状态 |
帧尾 |
位置 |
0 |
1 |
2 |
1字节 |
4 |
5 |
6 |
7 |
8 |
9 |
长度 |
2字节 |
1字节 |
8字节 |
0xFF |
2字节 |
2字节 |
N字节 |
1字节 |
1字节 |
1字节 |
内容 |
0x0000 |
0x00 |
K0000001 |
0x00 |
0x0000 |
0x0000 |
…. |
0xFF |
0x00 |
0xFF |
三、在往下就是制定协议的命令字:
制定各个命令字的具体的含义,传送什么样的内容。如何判断传送内容的正确性,
鉴别传送的内容的真伪,状态码的定义。简单介绍下:通过状态码来判断发送
数据包的状态,是否成功执行了命令。通过校验位来判断内容是否真实可靠。
通过加密和解密算法保证内容的安全。需要加密的内容一般包括终端编号,传送的
内容等。