问题描述
- C#中socket通信需要将数据按包头和定长分割,如何做
-
包头是0x55,每个数据加上包头为11个byte,但是数据中也可能出现0x55,该如何分割
解决方案
一般的解决方法是两种:
1)定义转义符,对内容中的 0x55 进行转义。如将 0x55 转义成 0x54 01;则 0x54 是 0x54 00;用两个字节表示;
2)定义包头后带数据的长度,再加上包尾,最好再加上一个校验位。这样在接收到一包数据后,先按上述定义进行有效性验证。
解决方案二:
包头后面带上长度信息,按长度去截取啊。这样最稳当
解决方案三:
数据尾加校验位(2位,即总长13位),遇到0x55向后读取共13位,计算最后2位是否与校验码一致,一致就是完整的数据包,否则舍弃.
时间: 2025-01-02 10:14:17