求助!SuperSocket框架如何获取数据包

adelina2kx 2017-05-11 10:46:17
根据官方文档的提示有一种数据包过滤器叫做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协议到底怎么用
...全文
370 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
niangnao8736 2017-11-14
  • 打赏
  • 举报
回复
我也是这个问题,楼主解决了吗?还有一些细节问题,想和你交流一下可以吗?谢谢啊,我的435026695@qq.com,谢谢楼主

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧