免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1758 | 回复: 0
打印 上一主题 下一主题

linux下载软件编程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-10-23 18:27 |只看该作者 |倒序浏览

  1. void do_write(int s,char *buf,int len)
  2. {
  3.         int retcount;
  4.         do{
  5.                 retcount = write(s,buf,len);
  6.                 buf += retcount;
  7.                 len -= retcount;
  8.         }while(len > 0);
  9. }

  10. void transmit()
  11. {
  12.         int fd;
  13.         int sd = file_info.sd;
  14.         int read_count,read_sum = 0;
  15.         char *buf = (char*)malloc(102500);
  16.         fd = file_info.fd = open(file_info.path,O_WRONLY | O_CREAT | O_TRUNC,0666);
  17.         if(fd < 0){
  18.                 printf("local file open error\n");
  19.                 exit(1);
  20.         }
  21.         while(read_sum < file_info.size){//file_info.size为下载文件的大小
  22.                 read_count = read(sd,buf,102400);
  23.                 do_write(fd,buf,read_count);
  24.                 read_sum += read_count;
  25.         }
  26.         printf("read_sum:%d\n",read_sum);
  27.         printf("file size:%d\n",file_info.size);
  28.         free(buf);
  29. }
  30. 以上代码用于下载文件,while循环中从网络读入数据,然后写入本地。测试发现读取的数据始终比文件本来的大小多几个字节(也就是read_sum大于file_info.size),因此下载的文件无法使用,请问我哪里写错了

  31.               

复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP