winsocket实现http下载文件的奇怪问题(最后一次必然recv超时)

windless0530 2011-09-22 12:11:00
同样的代码,下载两个server上两上不同的文件。

在while循环里不断recv。

一个小一些的文件,顺利下载完成。
另外一个大一些的,每次都在最后一次recv的时候超时……报错为10060.

请问可能是什么原因?我用浏览器下载后者文件是没问题的。

// 代码如下:
// pBuffer大小和nBufferSize是匹配的。
int nBufferSize = std::min<int>(BLOCK_SIZE, task.m_nTotalBytes - task.m_nReadBytes) + 1;
nLen = recv(hSocket, (char *)(pBuffer), nBufferSize, 0);

...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
WaistCoat08 2011-09-22
  • 打赏
  • 举报
回复
问题解决,睡前劫个分。
windless0530 2011-09-22
  • 打赏
  • 举报
回复
晕,我自己傻缺了,漏掉了一部分content,导致最后传输完毕了以为没结束,这时候再recv当然超时了……

明天我自己结贴……
弱水垂钓 2011-09-22
  • 打赏
  • 举报
回复
content-length,把握住这个吧
jsyren 2011-09-22
  • 打赏
  • 举报
回复
ding
hurryboylqs 2011-09-22
  • 打赏
  • 举报
回复
content里有报文长度,接完就不要再recv了

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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