InternetReadFile 读取大于2G的文件出错

HaoYuan 2014-07-01 04:15:40
从FTP下载文件,用InternetReadFile读取数据。下载一般文件时没有问题,当文件大于2G就报错了,出错时已下载的文件刚好2G,请问是什么原因造成的?怎么改啊?
...全文
359 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
无脑码农蜗牛 2015-02-03
  • 打赏
  • 举报
回复
楼主,你好,我现在也是遇到这种问题了,读的文件过大的时候,再中途,InternetReadFile会返回错误,然后就下载失败了,请问你现在这个问题解决了吗?
shenyi0106 2014-07-02
  • 打赏
  • 举报
回复
用internetreadfileex API, InternetReadFile有点老了,可能不支持2G以上的大文件
HaoYuan 2014-07-02
  • 打赏
  • 举报
回复
引用 5 楼 zgl7903 的回复:
估计长度判断中使用了LONG型数据 LONG_MAX = 2147483647 (2G)
我判断长度用的是LONGLONG类型,出错是在InternetReadFile中的,到2G时接受失败了,不是比较的问题!
zgl7903 2014-07-02
  • 打赏
  • 举报
回复
估计长度判断中使用了LONG型数据 LONG_MAX = 2147483647 (2G)
fishion 2014-07-02
  • 打赏
  • 举报
回复
你应该也是用InternetReadFile循环读取文件数据的吧,调用FtpGetFileSize获得文件大小分小段来循环下载文件数据,保存下来,然后用GetLastError和InternetGetLastResponseInfo 判断下是出现什么错误了
凌乱哥 2014-07-01
  • 打赏
  • 举报
回复
代码中写上调试代码,让程序下载到快到2G的时候断点下来,然后跟踪,看看是哪里的问题

if(iTotal == XXX)
      TRACE("XXXXXX\n");
caewow 2014-07-01
  • 打赏
  • 举报
回复
缓冲区不够?
HaoYuan 2014-07-01
  • 打赏
  • 举报
回复
引用 1 楼 shenyi0106 的回复:
FAT32分区??


NTFS的
shenyi0106 2014-07-01
  • 打赏
  • 举报
回复
FAT32分区??

18,356

社区成员

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

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