预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

linux下http协议多线程下载实现 该程序只能在http协议下工作,等以后研究其他协议时再补充。-E'?!K+Z9y2^5K2s*r!a"j(I,G.EJ-F(\%M,P.](网络服务器用的是腾讯公司的linuxqq希望他们能原谅我……)3b,W0?*k"V%]9p-\编程思路:2x&s;?8b!}:zq!r-V1、分析http协议数据包。6I,h-O.P2N'R9R-G1Z以下是一个请求报文与相应的回复报文的例子,j+?)l0]/i;y9P,S,~"YE-h.j"o1[2e.~GET/linuxqq/linuxqq-v1.0.2-beta1.i386.rpmHTTP/1.1,?"q8Z2r;l(v9RAccept:*/*8L0G:I9y,g'n(TAccept-Language:en-us*R9v7q1m:{-p9FUser-Agent:Mozilla/4.0(compatible;MSIE5.01;WindowsNT5.0)$zK!~5X"FA:h*w)i8jHost::80H8};p-G)e)R/w8{){9HConnection:Keep-Alive#t2k3X/?&c-c5C.Z.F0J2X*_;P/`){9`HTTP/1.1206PartialContent:U*c4w:u!w'v!c,HContent-Length:1009349)l4q:j4{/EKContent-Range:bytes0-1009348/5046743;q4C5V3O$c&G%U/@Server:qqdlsrv(1.84forlinux).q&r3X*O"d+U*J7iXConnection:Keep-alive3F;bh6S/f,x2w3|Content-Disposition:attachment;filename=linuxqq-v1.0.2-beta1.i386.rpm%?.C9X#?9k.U0y*i8Z$cAccept-Ranges:bytes#o"t0p3q4K1c!Y6jContent-Type:application/octet-stream9K,y"k&E)f6H$z${7h0Q;r.K:b9m$e1?$H$D,G;k;U2、取得文件大小,然后进行对文件的分块。)T1{*^'r1I3Z2@3、对文件分块下载,S%d:m1J7M,s.U4、合并文件,并改名。!y)[3d%L+D5B&A(w)L9P8p,wq$v+A,[;w6B总结:这个分块再合并总感觉太过于啰嗦。6A0P3L+W'E.r,v5u是否还有另外一种方法,7^0\%p%p't&r1Y#R;v(`如迅雷,在一开始就取得文件大小就在硬盘分配空间,6DM0]%E+C"C5m)c%E然后分块下载直接写入到文件的不同块?2A"i2g6?9G0i是否可以用文件指针锁住不同的区域并写入?"y5s8n5L,a%z8bF9Y:|;|'t#q:x;O8~9M#^*A`&[9u%P7x:c,L!V3v/*#w:B-m*p2I#k6S+}3^+r*down.c2d2W8H4G3C9w*!g$c,D0E,w6f,j7P!w*Createdon:Mar27,20093S(x-L%j5l9o-u*Author:root:i&@!?.J#B%h!J'C*thisprogramistodownloadfileinhttpprotocolwithmultthreading(v&d)e!q;]:y#r!|8K5Wi*/0[.k.i&f-E.p0o0r9U$L6Z#ifndefSTRUCT_H_%h&^9v2q2`3J/b#defineSTRUCT_H_3U3f%`'w$i:B2Q(d%KRJ,`*Y0u!m1j!?8G#endif/*STRUCT_H_*/5t0N4H'T*k&r&_3E8V#include<unistd.h>!y"U9o9i'F-p#include<stdio.h>&h9a,`3z2o:p8I)x4H!y5K#include<stdlib.h>.[1?$]"z6n#W+a#include<string.h>&F.F3q9K*D"G#include<sys/socket.h>2z(o!^+|,]#include<sys/types.h>6P+`+g6I7k9t4z3v#include<netdb.h>K#s:p7e)@9C:N'V#include<netinet/in.h>&z4z&z!K&F!z//createastructtosavethefilepartinfomation8r3O/f%zW0`8O5`:w4Tstructfilepart&P9T+r*N+E4X(Z5M$P1r{3q0[3E!?2o+N(d:B;S%O:g5Gintpartnum;)`-e#u6G"k+k-y7