求助!SuperSocket框架如何获取数据包
根据官方文档的提示有一种数据包过滤器叫做FixedHeaderReceiveFilter专门用来处理包头+包体组合式封包数据的,照理说这个框架这么火,应该很容易使用才对,然而实际开发测试中遇到了很费解的问题,怎么百度都找不到答案。、
问题是这样的,我在客户端中封了一个byte[] 包,内容是一个string : Add 3 4转byte[] 后一共7位,包头就是一个int对象7,占4位,组合后一共11位,发给服务端,服务端这边要实现一个FixedHeaderReceiveFilter接口,其中有1个方法叫做
int GetBodyLengthFromHeader(byte[] header, int offset, int length)
根据官方文档的写法包体长度是return (int)header[offset + 4] * 256 + (int)header[offset + 5];
实际调试中发现触发该方法后得到byte[] header 是一个409600长度的byte数组,而offset始终等于405504,length等于我预设的包头长度4位,如果根据官方的代码直接return (int)header[offset + 4] * 256 + (int)header[offset + 5];的话会得到一个几万位长度的值,这显然不科学,我的包一共就11位长,于是我尝试使用header[offset] 调试取值,以及后面几位看看能不能得到什么线索,然而并看不出什么名堂来。。。我就不明白了,我以前用C#自带的Socket来做服务端,服务端那边总是能根据实际长度返回客户端发来的byte[] 怎么用了框架反而更麻烦了。。。
有没人知道这个FixedHeaderReceiveFilter协议到底怎么用