Chinaunix

标题: HTTP的GET命令支持多线程吗? [打印本页]

作者: luojiafeng1984    时间: 2008-09-16 15:30
标题: HTTP的GET命令支持多线程吗?
我用C++搞的一个HTTP页面获取程序,现在是单线程,就是发送 Get命令,然后接收返回的数据。请问我可以用多线程发送GET命令吗?

比如说 http://www.chinaunix.net/hot.shtml,这个文件有 100K,我第一个线程发送GET命令取得这个文件的 前50K,第二个线程发送Get命令取得这个文件的后50K,这样行的通吗?
作者: converse    时间: 2008-09-16 15:33
可以,多线程下载就是基于此的,但是这需要这个http服务器支持content-range这个字段.
作者: luojiafeng1984    时间: 2008-09-16 15:39
原帖由 converse 于 2008-9-16 15:33 发表
可以,多线程下载就是基于此的,但是这需要这个http服务器支持content-range这个字段.


很奇怪,我在HTTP头里面写了Range这个字段,一个线程,但是还是把整个文件取回来了。是一个HTML文件。
Range: bytes=1024-\r\n";   //从1024字节获取
作者: converse    时间: 2008-09-16 15:52
标题: 回复 #3 luojiafeng1984 的帖子
不是range,是content-range
http://www.cnpaf.net/class/HTTP/0532918532641885.html
作者: luojiafeng1984    时间: 2008-09-16 16:11
原帖由 converse 于 2008-9-16 15:52 发表
不是range,是content-range
http://www.cnpaf.net/class/HTTP/0532918532641885.html



range: bytes=0-100这个是客户端请求头,
content-range这个是服务器返回的信息。

我如果是用GET命令来抓回一个 普通的网页文件,那即使指定range范围了,也是把整个网页抓回来了。
如果是用GET命令下载 exe文件,是可以像你说的那样,指定下载哪一块数据。
作者: zhoubug    时间: 2008-09-16 17:46
可能是服务器对不同类型的文件配置的处理方式不一样吧,服务器不配合不怪你喽
作者: 随风缘    时间: 2008-09-16 23:44
要web服务器支持断点续传就可以了.
作者: redor    时间: 2008-09-17 09:52
原帖由 随风缘 于 2008-9-16 23:44 发表
要web服务器支持断点续传就可以了.



都是通过range 来支持, 不过大多数HTTP服务器都支持range的.
作者: langue    时间: 2008-09-18 20:31
请注意,HTTP协议并没有“多线程”一说。
1、HTTP仅提供“断点续传”,但是服务器不一定允许你同时打开多个连接。
2、在发出请求以后,一定要记住检查请求返回值和头部信息,如果与期待的内容不符,表示你的尝试失败了。服务器并不能满足所有的请求,这是常理,HTTP并无责任。
作者: langue    时间: 2008-09-18 20:40
另外,某些动态内容也是不允许你断点续传的。服务器需要动态地生成内容,想要多线程下载动态内容,除非强制一个缓存,否则利用现有的技术办不到。
作者: system888net    时间: 2008-09-19 13:35
ls 补充的对.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2