一种C# 的Tcp通讯协议规划

C# Tcp通讯协议规划

1. 实现目标

  实现一个服务端,多个客户端的稳定,可靠的TCP/IP通讯方式。

2. 功能规划

  认识:

  开发模式和统一入口同样重要

 

  功能:

  实现上参考分层模型,概念上将Socket连接和应用协议进行分层,职责分离,实现上将连接,发送,接收,处理进行分离,简化结构。

  • 连接管理功能包括

     服务端自活监控

     连接

          断开连接

               重连策略制定

               重连

               发送

               接收

  • 协议实现功能包括

              发送确认(单次ACK)

              重发策略

              内容分段

              重复控制

              连接探测

              消息转发

              粘包处理

3. 协议定义

发送最大长度: 1024字节(以太网)

 

功能名称

字节数量

起始位置

结束地址

描述

消息头

8

0

7

FF FE FD FC FC FD FE FF

版本号

4

8

11

8~9: 大版本

10~11: 小版本

消息编号

6

12

17

ACK确认字段

12~15: 递增消息标识

16~17: 消息段数

消息段数

2

18

19

总消息段数

控制位

2

20

21

1: 发送消息探测

2: 返回探测成功

3: 发送数据

4:  ACK

源IP地址

8

22

29

22~23:192

24~25:168

26~27:40

28~29:172

目标IP地址

8

30

37

30~31:192

32~33:168

34~35:40

36~27:172

预留

50

38

87

预留内容

数据长度

4

88

91

数据长度

数据内容

数据长度

92

数据长度 + 91

数据内容

校验

8

数据长度 +92

数据长度 +92+7

部分校验(CRC8):版本号+消息编号+目标IP地址+数据长度

消息尾

8

数据长度 +92+8

数据长度 +92+8+7

FF FE FD FC FC FD FE FF

 

4. 实现方式

  1. 连接管理:连接,发送,接收,断开
  2. 协议的使用,以类的形式进行封装
  3. 协议管理:生成,解析
上一篇:团体程序设计天梯赛 L2-022 重排链表 (25分)


下一篇:【原创】NES第二波:如何用VS Code,编写NES/FC游戏程序。