总的来说,http的多线程下载需要如下几个步骤
1.先对目标URL地址进行解析,得到三类信息(1)主机地址,(2)端口(如果没有给出,默认就是80),(3)文件所在主机的具体路径名以及文件名
例如:
char ulr[128] = "http://file2.mydrivers.com/board/wb6audiowinnt4winnt4.exe"; 解析后应该得到如下信息
主机地址:file2.mydrivers.com
端口:80(因为没有给出,所以就是默认值)
文件名及其路径:board/wb6audiowinnt4winnt4.exe
2.我们构造满足自己需要的http请求报头,来得到要下载的目标文件的总长度
sprintf(Request, "GET %s HTTP/1.1\r\nAccept: */*\r\nAccept-Language:en-us\r\"nU"
"ser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT5.0)\r\nHost: "
"%s:%d\r\nConnection: Keep-Alive\r\n\r\n", filepath, hostname, port);
发送后,我们会得到一个响应报文,在接收字段中里面有价值的信息就是length:xxx的内容,也就是对于文件的大小。保存该值。