Skip to content

Stream

QUIC中的Stream为应用程序提供了一种轻量级、有序字节流抽象,并且是可靠传输的实际单元。

有关QUIC Stream的更多信息(特别是Stream的状态),请参阅QUIC Stream文档

Stream实际上是QUIC的一个内部概念,由引擎进程组织和管理,作为“连接”的来源。因此,如果你想寻找应用层面的数据传输API,封装后的接口会更适合。

本页将介绍Stream的基本结构和操作,并包含以下几个部分:

Stream类型

Stream可以是双向的或单向的,并且可以由任一端点创建。

创建Stream

主动创建新Stream

XQUIC支持在客户端和服务器端创建双向和单向流。Stream充当连接的一种资源,必须与现有的连接一起创建。

Stream是由xqc_create_stream_with_conn生成的,并根据实际需求封装成不同的接口:

XQUIC提供了一对测试主机,在其中test_client默认使用xqc_stream_create来创建Stream,并生成一个双向流。

详细参数请参阅xqc_stream_create API

test_server在特定情况下使用xqc_stream_create_with_direction来创建服务端初始化的Stream。

详细参数请参阅xqc_stream_create_with_direction API

被动创建新Stream

当收到未知Stream帧时,当前主机将调用xqc_passive_create_stream被动创建Stream。

详细参数请参阅xqc_passive_create_stream API

在Stream上发送数据

写入应用数据到Stream

应用数据实际上是在传输级别发送的,这是在h3_stream发送过程中触发的。

详细参数请参阅xqc_stream_send API

在Stream上读取数据

从Stream中读取应用数据

XQUIC使用xqc_stream_recv从Stream列表中读取数据,并定期在主引擎进程中触发。

详细参数请参阅xqc_stream_recv API