文档介绍:SuperSocket 通过 FixedHeaderReceiveFilter 解析自定义协议 SuperSocket 提供了一些通用的协议解析工具, 你可以用他们简单而且快速的实现你自己的通信协议:? TerminatorReceiveFilter (, ) ? CountSpliterReceiveFilter (, ) ? FixedSizeReceiveFilter (, ) ? BeginEndMarkReceiveFilter (, ) ? FixedHeaderReceiveFilter (, ) 由于本次项目涉及的通信协议是头部格式固定并且包含内容长度的协议这里主要讲解使用 FixedHeaderReceiveFilter 来拆解. 通信协议格式如下: 代码字节数说明 68H 1 帧起始码 DLC 4 设备逻辑地址 SEQ 2 主站地址与命令序号 68H 1 帧起始码 C1 控制码 L2 数据长度(DATA 长度) DATA 变长数据内容 CS1 校验码 16H 1 结束码在 FixedHeaderReceiveFilter, 头部指数据内容之前的数据( 即数据长度 L 之前的部分), 以上协议可以知道, 头部包含 11 个字节. 首先, 根据协议的需要来定义自己的请求类型, 先实现一个客户端请求的实体类 RequestInfo, 改 RequestInfo 类必须实现接口 IRequestInfo ,该接口只有一个名为"Key" t 设计了两个 RequestInf o 类:StringRequestInfo 和 BinaryRequestInfo, 这里我们自定义一个来 GDProtocolRequestInfo 实现: using System; using ; using ; using ; using ; namespace GDServer { public class GDProtocolRequestInfo : IRequestInfo { /// <summary> /// [ 不使用] /// </summary> public string Key { get ; set