一、概述
TUTK P2P SDK 中,会话(Session)是设备端与 APP 端建立的 P2P 连接总载体,通道(Channel)是会话下细分的功能传输通道。一个会话可包含多个不同类型的通道,各通道负责特定数据传输(如音视频、文件、控制指令),底层依赖 IOTC 通道实现数据转发。
二、会话(Session)
会话是设备端与 APP 端通过 P2P 建立的逻辑连接实例,是所有数据传输的基础容器,具备以下核心特性:
- 每个会话对应唯一的会话ID(SID),用于标识设备与 APP 的唯一连接;
- 会话建立过程包含身份认证、NAT 穿透、P2P 隧道创建等步骤,建立成功后保持连接状态;
- 会话是通道的父容器,一个会话可承载多个不同类型的通道(如同时创建 AV 通道传输音视频、RDT 通道传输文件);
- 会话生命周期覆盖从连接建立到断开的全过程,会话断开后所有下属通道自动销毁。

图 1:会话(Session)核心概念示意图
三、会话和通道(Session & Channel)
通道是会话下的功能细分模块,用于隔离不同类型的数据传输,避免相互干扰。SDK 中常见的通道类型及用途如下:
3.1 常见通道类型
- IOTC 通道:最底层的基础通道,负责 P2P 数据的底层转发,是所有上层通道的依赖;
- AV 通道:用于音视频数据传输(如双向视频通话、实时监控),支持全双工传输(SDK v3.3+);
- RDT 通道:用于可靠文件传输(如图片、视频文件下载/上传),提供数据校验和重传机制。
3.2 会话与 AV 通道的关系(示例)
以最常用的 AV 通道为例,会话与通道的层级关系如下:
- 会话是顶层容器,先通过
IOTC_Connect_ByUID等接口建立会话; - 会话建立后,通过
avClientStartEx(APP 端)或avServStartEx(设备端)创建 AV 通道,每个 AV 通道绑定到特定会话; - 一个会话可创建多个 AV 通道(如多摄像头同时传输),但需确保通道 ID 不冲突;
- AV 通道仅负责音视频数据传输,控制指令(如呼叫、挂断)仍通过会话层接口传输。

四、通道之间的关系
上层通道(AV 通道、RDT 通道)与底层 IOTC 通道为一对一映射关系,即每个上层功能通道都会占用一个独立的 IOTC 通道用于数据传输。
4.1 AV 通道与 IOTC 通道的映射关系
AV 通道的创建过程会自动申请并绑定一个 IOTC 通道,这种映射关系可在
avClientStartEx(APP 端)和 avServStartEx(设备端)接口的实现逻辑中体现:- 调用上层通道创建接口时,需传入会话 ID(SID),SDK 会基于该会话申请对应的 IOTC 通道;
- 上层通道的所有数据(如视频帧、音频数据)都会通过绑定的 IOTC 通道进行 P2P 转发;
- 上层通道销毁时(如
avClientStop),对应的 IOTC 通道会被自动释放,避免资源泄漏。

图 3:AV 通道与 IOTC 通道的一对一映射关系示意图
4.2 RDT 通道与其他通道的关系
RDT 通道的底层实现逻辑与 AV 通道一致,其与会话、IOTC 通道的关系可直接参考 AV 通道的规则:
- 一个 RDT 通道对应一个独立的 IOTC 通道;
- RDT 通道需基于已建立的会话创建,通过会话 ID 关联到底层 P2P 隧道;
- 同一会话中可同时存在 AV 通道和 RDT 通道,两者占用不同的 IOTC 通道,数据传输互不干扰。
关键注意事项
1. 通道数量限制:每个会话支持的通道数量受 SDK 配置限制(默认支持多个,需根据实际需求合理规划);
2. 资源释放顺序:需先销毁上层功能通道(如 AV 通道、RDT 通道),再断开会话,避免 IOTC 通道资源泄漏;
3. 通道独立性:不同通道的数据传输相互隔离,即使同一会话下的多个通道,也不会出现数据混淆;
4. 性能考量:多通道同时传输会占用更多带宽和系统资源,需根据设备性能和网络环境控制通道数量。
