Archives

帖子来自 sx1989827 RSS

浅谈关于 http 的多线程断点续传下

作者: sx1989827 (1 篇文章) 日期: 十一月 11, 2010 在 8:10 下午
评论 (6)

本来这篇文章一直都想写的,只是前两天发点小烧,身体不适,所以耽搁了。我查了下网上资料,发现大部分都是ftp多线程下载的,关于http还真的不多,所以想写篇文章阐述下,自己才疏学浅,哪里写的不好,还望高手见笑了。 前两篇文章都是用wininet来编写的,代码貌似没有问题,但是试验中发现没有办法实现真正的多线程下载,下载速度慢得很,而且即使是多线程,也不能同时internetreadfile。后来看网上说要用异步方式来写,看了下介绍,感觉太麻烦了,听说那些下载软件都是直接用socket来做的,所以自己索性改用socket来封装http数据包了。 我们在启动多线程前先要获得目标文件的content-length,也就是文件大小,根据这个文件的大小来建立文件: char buf[1024]={0}; sprintf(buf,"GET %s HTTP/1.1\r\n" "Accept:*/*\r\n" "User-Agent: sx\r\n" "Host: %s\r\n" "Connection:close\r\n" "Cache-Control: no-cache\r\n" "\r\n\r\n",name,host); s.send(buf,strlen(buf)); int count; char r[1024]={0}; count=s.recv((char*)r,1024); s.close(); char *l=strstr(r,"Content-Length:"); l+=16; char ...

继续 ›

分类: 博客征文专栏, 并行计算