- 论坛徽章:
- 0
|
最近看http协议,有一本书这样描述:http 1.1支持persitent connection. 而在persitent connection的条件下,浏览器的实现有两种模式:1,不带pipeline ;2,带pipeline. http 1.1默认情况下是带pipeline.
假如现在想实现一个程序,想通过http 1.1协议 从主机host get 10 gif(gif1,gif2,... gif10).
如上:
1 用不带pipeline的persistent connection实现。可以对主机host开一个连接,然后用 停止-等待完成10个gif的获取。在发送了第一个request GET gif1 HTTP1.1以后,停止等待直到等到http response以后在发送第二个resquest GET gif1 HTTP1.1,然后等待第二个连接的response.这样一次获取十个 gif.
显然上面的停止-等待的做法在浪费socket上的时间,每一个请求在发送之前总是要等待 1个 tcp的 RTT时间还要多。
2 用带pipeline的persistent connection的实现。同样对主机host开一个连接,不用停止等待,顺序发针对10个gif 的request,然后再从socket上读取response。
现在有一个问题。怎么样确定我从socket上读到的response是针对那个request。 不知道http
response里面有什么特殊的字段?希望有人能指点以下:)
当然以上的实现可以开一个线程里开 10个不同的socket连接,或者启动10个线程也可以搞的定。
我现在的目的只是想搞清楚,通过我 2 种描述的方法能不能搞的定。
[ 本帖最后由 喇嘛疤瘌 于 2007-9-18 10:36 编辑 ] |
|