标签:通讯 C# Tcp FC 消息 长度 92 数据 连接
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. 实现方式
- 连接管理:连接,发送,接收,断开
- 协议的使用,以类的形式进行封装
- 协议管理:生成,解析
标签:通讯,C#,Tcp,FC,消息,长度,92,数据,连接 来源: https://www.cnblogs.com/slowzero/p/14537035.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。