• 关于Socket通讯时通讯协议的制定


              在系统开发过程中,如果涉及到了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

    在往下就是制定协议的命令字:

    制定各个命令字的具体的含义,传送什么样的内容。如何判断传送内容的正确性,

    鉴别传送的内容的真伪,状态码的定义。简单介绍下:通过状态码来判断发送

    数据包的状态,是否成功执行了命令。通过校验位来判断内容是否真实可靠。

    通过加密和解密算法保证内容的安全。需要加密的内容一般包括终端编号,传送的

    内容等。

  • 相关阅读:
    C#实现断点续传
    记住密码"功能的正确设计
    异常处理的性能开销
    asp.net提高程序性能的技巧(一)
    C#创建文件夹
    一个商人应遵守的22条规矩
    列不属于表--可能出现的问题总结
    存储过程无法得到返回型参数
    通用存储过程(增、删、改、查询分页)
    Mac下使用Charles抓包https接口
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2238880.html
Copyright © 2020-2023  润新知