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。