VLC 客户端如何在应用层 (HTTP) 中向服务器请求更多数据?

How does a VLC client ask the server for more data in application layer (HTTP)?

我正在从事与视频流相关的项目。我一直在广泛阅读 access_output 和访问模块中的 http 代码。我的问题是关于客户端如何要求服务器在应用层发送更多数据,具体使用http。我假设它位于 src/network 文件夹中的 httpd 文件中,但我一直在写入日志文件,但我似乎无法弄清楚客户端如何请求数据。看起来服务器只是在没有确认的情况下将其发送给客户端,但我非常怀疑情况是否如此。

非常感谢您的帮助!

请求更多数据是使用 HTTP GETRange header.

实现的

示例:

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