一、概述
TUTK P2P SDK 中,會話(Session)是設(shè)備端與 APP 端建立的 P2P 連接載體,通道(Channel)是會話下具體可操作的容器。一個會話可包含多個不同類型的通道,各通道負(fù)責(zé)特定數(shù)據(jù)傳輸(如音視頻、文件、控制指令),底層依賴 IOTC 通道實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)。
二、會話(Session)
會話是設(shè)備端與 APP 端通過 P2P 建立的邏輯連接實例,是所有數(shù)據(jù)傳輸?shù)幕A(chǔ)容器,具備以下核心特性:
- 每個會話對應(yīng)唯一的會話ID(SID),用于標(biāo)識設(shè)備與 APP 的唯一連接;
- 會話建立過程包含身份認(rèn)證、NAT 穿透、P2P 隧道創(chuàng)建等步驟,建立成功后保持連接狀態(tài);
- 會話是通道的父容器,一個會話可承載多個不同類型的通道(如同時創(chuàng)建 AV 通道傳輸音視頻、RDT 通道傳輸文件);
- 會話生命周期覆蓋從連接建立到斷開的全過程,會話斷開前需要銷毀此連接下所有的AV或者RDT通道。

圖 1:會話(Session)核心概念示意圖
三、會話和通道(Session & Channel)
通道是會話下的具體可操作的容器,用于隔離不同類型的數(shù)據(jù)傳輸,避免相互干擾。SDK 中常見的通道類型及用途如下:
3.1 常見通道類型
- IOTC 通道:最底層的基礎(chǔ)通道,負(fù)責(zé) P2P 數(shù)據(jù)的底層轉(zhuǎn)發(fā),是所有上層通道的依賴;
- AV 通道:用于音視頻數(shù)據(jù)傳輸(如雙向視頻通話、實時監(jiān)控),支持全雙工傳輸(SDK v3.3+);
- RDT 通道:用于可靠文件傳輸(如圖片、視頻文件下載/上傳),提供數(shù)據(jù)校驗和重傳機(jī)制。
3.2 會話與 AV 通道的關(guān)系(示例)
以最常用的 AV 通道為例,會話與通道的層級關(guān)系如下:
- 會話是頂層容器,先通過
IOTC_Connect_ByUID等接口建立會話; - 會話建立后,通過
avClientStartEx(APP 端)或avServStartEx(設(shè)備端)創(chuàng)建 AV 通道,每個 AV 通道綁定到特定會話; - 一個會話可創(chuàng)建多個 AV 通道(如NVR多通道,或者文件上傳下載),但需確保通道 ID 不沖突;

圖 2:會話與 AV 通道的層級關(guān)系示意圖
四、通道之間的關(guān)系
上層通道(AV 通道、RDT 通道)與底層 IOTC 通道為一對一映射關(guān)系,即每個上層功能通道都會占用一個獨(dú)立的 IOTC 通道用于數(shù)據(jù)傳輸。
4.1 AV 通道與 IOTC 通道的映射關(guān)系
AV 通道的創(chuàng)建過程會自動申請并綁定一個 IOTC 通道,這種映射關(guān)系可在
avClientStartEx(APP 端)和 avServStartEx(設(shè)備端)接口的實現(xiàn)邏輯中體現(xiàn):- 調(diào)用上層通道創(chuàng)建接口時,需傳入會話 ID(SID)和要使用的IOTC通道,SDK 會生成一個AV通道,用以數(shù)據(jù)傳輸;
- 上層通道的所有數(shù)據(jù)(如視頻幀、音頻數(shù)據(jù))都會通過綁定的 IOTC 通道進(jìn)行 P2P 轉(zhuǎn)發(fā);
- 上層通道銷毀時(如
avClientStop),對應(yīng)的 IOTC 通道會被自動釋放,避免資源泄漏。

圖 3:AV 通道與 IOTC 通道的一對一映射關(guān)系示意圖
4.2 RDT 通道與其他通道的關(guān)系
RDT 通道的底層實現(xiàn)邏輯與 AV 通道一致,其與會話、IOTC 通道的關(guān)系可直接參考 AV 通道的規(guī)則:
- 一個 RDT 通道對應(yīng)一個獨(dú)立的 IOTC 通道;
- RDT 通道需基于已建立的會話創(chuàng)建,通過會話 ID 關(guān)聯(lián)到底層 P2P 隧道;
- 同一會話中可同時存在 AV 通道和 RDT 通道,兩者占用不同的 IOTC 通道,數(shù)據(jù)傳輸互不干擾。
