首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

请会c++和java朋友帮忙,2G以后,recv总是读出多余的数据,超级奇异?该怎么处理

2012-04-27 
请会c++和java朋友帮忙,2G以后,recv总是读出多余的数据,超级奇异?我用winsock写一个程序下载web的资源,服

请会c++和java朋友帮忙,2G以后,recv总是读出多余的数据,超级奇异?
我用winsock写一个程序下载web的资源,服务器是tomcat 4.1
如果web的资源是一个实实在在的文件,那就下载数据长度正常
如果web的资源是一个servlet输出的文件,当超过2G之后,recv总是读出多余的数据,如果说我的servlet输出数据有问题,但我用浏览器下载又是正常的,那说明我的c++程序有问题,但他又能下载一个实实在在的文件,真是很矛盾

例如:一个2G的资源

C/C++ code
DWORD length;r = ::recv(s, buffer, 51200, 0);length += r;

length的长度都会是2G再多几K的


[解决办法]
web 服务器返回的数据可能有其他格式: chunked 特别是大文件

Transfer-Encoding: chunked

这时每段数据会多包涵一些 数字, 这样接收的会多出一些数据

[解决办法]
抓包分析下是多了什么数据了

热点排行