免费注册 查看新帖 |

Chinaunix

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

HTTP的GET命令支持多线程吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-16 15:30 |只看该作者 |倒序浏览
我用C++搞的一个HTTP页面获取程序,现在是单线程,就是发送 Get命令,然后接收返回的数据。请问我可以用多线程发送GET命令吗?

比如说 http://www.chinaunix.net/hot.shtml,这个文件有 100K,我第一个线程发送GET命令取得这个文件的 前50K,第二个线程发送Get命令取得这个文件的后50K,这样行的通吗?

论坛徽章:
0
2 [报告]
发表于 2008-09-16 15:33 |只看该作者
可以,多线程下载就是基于此的,但是这需要这个http服务器支持content-range这个字段.

论坛徽章:
0
3 [报告]
发表于 2008-09-16 15:39 |只看该作者
原帖由 converse 于 2008-9-16 15:33 发表
可以,多线程下载就是基于此的,但是这需要这个http服务器支持content-range这个字段.


很奇怪,我在HTTP头里面写了Range这个字段,一个线程,但是还是把整个文件取回来了。是一个HTML文件。
Range: bytes=1024-\r\n";   //从1024字节获取

论坛徽章:
0
4 [报告]
发表于 2008-09-16 15:52 |只看该作者

回复 #3 luojiafeng1984 的帖子

论坛徽章:
0
5 [报告]
发表于 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文件,是可以像你说的那样,指定下载哪一块数据。

论坛徽章:
0
6 [报告]
发表于 2008-09-16 17:46 |只看该作者
可能是服务器对不同类型的文件配置的处理方式不一样吧,服务器不配合不怪你喽

论坛徽章:
0
7 [报告]
发表于 2008-09-16 23:44 |只看该作者
要web服务器支持断点续传就可以了.

论坛徽章:
0
8 [报告]
发表于 2008-09-17 09:52 |只看该作者
原帖由 随风缘 于 2008-9-16 23:44 发表
要web服务器支持断点续传就可以了.



都是通过range 来支持, 不过大多数HTTP服务器都支持range的.

论坛徽章:
0
9 [报告]
发表于 2008-09-18 20:31 |只看该作者
请注意,HTTP协议并没有“多线程”一说。
1、HTTP仅提供“断点续传”,但是服务器不一定允许你同时打开多个连接。
2、在发出请求以后,一定要记住检查请求返回值和头部信息,如果与期待的内容不符,表示你的尝试失败了。服务器并不能满足所有的请求,这是常理,HTTP并无责任。

论坛徽章:
0
10 [报告]
发表于 2008-09-18 20:40 |只看该作者
另外,某些动态内容也是不允许你断点续传的。服务器需要动态地生成内容,想要多线程下载动态内容,除非强制一个缓存,否则利用现有的技术办不到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP