利用HTTP协议进行视频播放的疑惑

zijian0818 2013-05-30 02:05:59
在windows上运行一个server,在苹果手机上运行client,利用该客户端通过http协议来和server通信获取视频流。

通过抓包,发现client发送的http头部有个:Range: bytes=0-1;然后服务器响应头部:Content-Range: bytes 0-1/filesize;

再接着client:Range: bytes=0-(filesize-1);服务器响应:Content-Range: bytes 0-(filesize-1)/filesize;

再后来client:Range: bytes=196608-393215;服务器响应:Content-Range: bytes 196608-393215/filesize(以上filesize为文件实际大小)

我的疑惑是,在第二次交互时,服务器真的要把整个文件都发送给客户端吗?我在验证的时候发现如果只读取一部分数据给客户端,二者的连接就中断了!但是总觉得把整个文件都发送出去不现实啊!

请教网络方面的高手答疑解惑!不胜感激!
...全文
983 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zijian0818 2013-05-31
  • 打赏
  • 举报
回复
经过一下午的实验,有了如下结果:即使客服端要求那么多数据,但是主动权在服务器,它可根据需要决定传送多少数据!比如client:Range: bytes=0-(filesize-1);服务器可以这样响应:Content-Range: bytes 0-1024/1025; 这样一来client会不停的请求数据,client:Range: bytes=1025-(filesize-1) ;server:Content-Range: bytes 1025-2048/1025 ...... PS:用的是get来请求数据
nossiac 2013-05-30
  • 打赏
  • 举报
回复
关键看用的是什么方法。 如果是HEAD,则只发个HTTP报头,没有数据。通常用这个方法来取得服务器上文件的相关信息,比如文件长度。 如果是GET,服务器就要真的发数据了……

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧