hook socket系列API 遇到分包不知道怎么处理

 我来答
一骑当后
推荐于2016-04-12 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40298 获赞数:306434
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部
这个东西我做过,是直接修改网页数据的。
你说的情况,可以直接在返回数据后判断是否
HTTP/1.1 200 OK
如果是,那就解析文件头,里面包含有长度,编码类型,传输类型,是否GZIP压缩,是否是chunked编码等,
如果没有Content-Length,那就判断是否是chunked,都没有,那直接就检测Connection是否是close。
如果是,那数据就到头了,然后就合并所有接收到的数据,返回给调用方即可。

我的框架是,
建立socket句柄的数据映射,可以是list,map,随意,因为是多线程的,这点是必须的。
结构大致如下
myrevc_
{
申请新映射或者,如果有,就根据调用方提供的缓存大小依次返回数据,offset控制好即可,数据返回完毕就删除映射,。
调用原始recv,
判断网页类型,超文本协议,获取文件长度,编码类型等等。
这里不考虑大文件,所以循环调用原始recv,读取出所有数据,直到结束,然后合并,解码,dosameting。
返回调用方剩余的缓存区大小。
}
WSARecv大同小异,OVERLAPPED也不影响,

因为是很早以前的东西,不是用vc写的,所以源码就不贴出来了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式