我正在开展与视频流相关的项目。我一直在access_output和access模块中广泛阅读http代码。我的问题是关于客户端如何要求服务器在应用程序层中发送更多数据,特别是使用http。我假设它位于src / network文件夹中的httpd文件中,但我一直在写日志文件,我似乎无法弄清楚客户端如何请求数据。看起来服务器似乎只是在没有确认的情况下将其发送给客户端,但我非常怀疑是这种情况。
非常感谢你的帮助!
答案 0 :(得分:0)
使用带有HTTP GET
标头的Range
来获取更多数据。
示例:
Range: bytes=123-
Range: bytes=123-456
在 VLC 中,您可以在modules/access/http.c中找到相关代码:
static int Request( access_t *p_access, uint64_t i_tell )
{
[...]
/* Offset */
if( p_sys->i_version == 1 && ! p_sys->b_continuous )
{
p_sys->b_persist = true;
net_Printf( p_access, p_sys->fd, pvs,
"Range: bytes=%"PRIu64"-\r\n", i_tell );
net_Printf( p_access, p_sys->fd, pvs, "Connection: close\r\n" );
}
另请参阅:RFC中的HTTP Range Requests。