一、錯誤碼概述
TUTK P2P SDK 各模塊的錯誤碼范圍定義如下,不同模塊的錯誤碼范圍不重疊,便于快速定位問題所屬模塊。
IOTCAPIs 錯誤碼:∈(-10000,0)
AVAPIs 錯誤碼:∈(-30000,-20000)
RDTAPIs 錯誤碼:∈(-20000,-10000)
P2PTunnelAPIs 錯誤碼:∈(-40000,-30000)
提示:錯誤碼為負(fù)數(shù)表示異常,0 表示操作成功,完整的錯誤碼請參考SDK目錄下Readme.html第三部分。如果無法快速理清錯誤產(chǎn)生的原因的話,會需要借助于SDK的日志來分析。日志的開啟方法,請參考章節(jié):SDK日志的開啟和保存。
二、IOTCAPIs錯誤碼
IOTCAPIs 相關(guān)錯誤碼主要涉及設(shè)備連接、服務(wù)器交互等核心通信場景,具體說明如下:
| 錯誤碼 | 含義 | 解釋 | 建議 |
|---|---|---|---|
-90 | 設(shè)備已經(jīng)從P2P服務(wù)器掉線 | P2P服務(wù)器會定時掃描設(shè)備是否到P2P服務(wù)器上報,指定時間內(nèi)沒有心跳過來,會判定設(shè)備從這臺服務(wù)器掉線 | 手動重啟設(shè)備,或者設(shè)備端對login info進(jìn)行監(jiān)測,如發(fā)現(xiàn)掉線,則進(jìn)行重啟P2P模塊 |
-60 | Master服務(wù)器無回應(yīng) | 通常是外網(wǎng)不暢,或者該UID沒有P2P服務(wù)器提供服務(wù)。如果是設(shè)備大規(guī)模無法訪問,多是沒有掛載P2P服務(wù)器。如果只是個別設(shè)備,多是網(wǎng)絡(luò)原因 | 如果大批量出現(xiàn)-60,推測應(yīng)該是服務(wù)器問題,檢查P2P服務(wù)器是否正常運(yùn)行 |
-42 | 指定時間(默認(rèn)60s)內(nèi)無法建立連線,含LAN、P2P、RLY | 目前已知原因如下:
| 檢查網(wǎng)絡(luò)連接狀態(tài),關(guān)閉防火墻重試;若設(shè)備掉線,等待一段時間后重新連接 |
-33 | 無法連上P2P服務(wù)器 | 網(wǎng)絡(luò)連接異?;騊2P服務(wù)器端口未開放 | 檢查網(wǎng)絡(luò)連接和服務(wù)器端口配置,確保設(shè)備能正常訪問P2P服務(wù)器 |
-27 | 本端主動中止連線 | 本端主動調(diào)用IOTC_Connect_Stop或者IOTC_Connect_Stop_bySID中止連線 | 確認(rèn)是否需要主動斷開連接,若為誤操作,重新建立連接即可 |
-23 | 連接心跳超時 | 已經(jīng)在指定時間(默認(rèn)60s)內(nèi)沒有再收到對方的心跳 | 檢查網(wǎng)絡(luò)穩(wěn)定性,適當(dāng)調(diào)整心跳超時時間,或優(yōu)化網(wǎng)絡(luò)連接質(zhì)量 |
-22 | 遠(yuǎn)端已經(jīng)關(guān)閉IOTC連接 | 對方已經(jīng)調(diào)用IOTC_Session_Close關(guān)閉了連接 | 確認(rèn)對方是否正常退出,如需繼續(xù)通信,重新發(fā)起連接請求 |
-2 | 無法解析master服務(wù)器域名 | 通常在外網(wǎng)不通情況下出現(xiàn) | 檢查設(shè)備網(wǎng)絡(luò)連接和DNS配置,確保能正常解析服務(wù)器域名 |
-1 | P2P服務(wù)器沒有回應(yīng) | 通常原因如下:
| 檢查網(wǎng)絡(luò)連接和服務(wù)器端口配置,確保P2P服務(wù)器正常運(yùn)行 |
三、AVAPIs錯誤碼
AVAPIs 錯誤碼主要與音視頻數(shù)據(jù)傳輸、通道管理相關(guān),具體說明如下:
| 錯誤碼 | 含義 | 解釋 | 建議 |
|---|---|---|---|
-20027 | 通道已經(jīng)被占用 | 經(jīng)常見于avClientStart系列或者avServStart系列接口,原因是使用的IOTC Channel ID已經(jīng)在使用了,還沒有被釋放 | 這個報錯比較隱蔽,先加打印確認(rèn)是否有正確釋放通道。如是極小概率,也可以通過更換IOTC通道來規(guī)避 |
-20016 | 連接心跳超時,同-23 | 已經(jīng)在指定時間(默認(rèn)60s)內(nèi)沒有再收到對方的心跳 | 檢查網(wǎng)絡(luò)穩(wěn)定性,適當(dāng)延長超時時間,或優(yōu)化網(wǎng)絡(luò)傳輸質(zhì)量 |
-20015 | 遠(yuǎn)端已經(jīng)關(guān)閉IOTC連接,同-22 | 對方已經(jīng)調(diào)用IOTC_Session_Close關(guān)閉了連接 | 確認(rèn)對方連接狀態(tài),如需繼續(xù)通信,重新建立AV通道連接 |
-20012 | 沒有數(shù)據(jù)可以接收 | 通常見于avRecvFrameData2/avRecvAudioData。收的頻率比對方送的頻率高,就會出現(xiàn),比如收100次,對方只送了50次,就會出現(xiàn)-20012 | 處理方式是在接收循環(huán)中添加sleep(5) ms,降低接收頻率與發(fā)送頻率匹配 |
-20011 | 超時 | 經(jīng)常見于avRecvIOCtrl、avClientStart系列或者avServStart系列接口。不同接口,原因不一樣:
| 先確認(rèn)是哪個API返回,再根據(jù)不同的API做不同的處理。如果是通道建立失敗,可以進(jìn)行幾次重連 |
-20000 | 參數(shù)錯誤 | 可能的原因為:
| 先確認(rèn)是什么API返回此報錯,檢查參數(shù)合法性和avIndex狀態(tài),針對性地進(jìn)行處理 |
-22244 | SSL版本不匹配 | 看起來是有l(wèi)ink到其他的openssl/mbedtls,有一方用的ssl不是tutk的版本 | 可以使用static的library,確保兩端使用相同版本的SSL庫 |
-22193 / -54592 | DTLS配置錯誤 | DTLS加密配置參數(shù)異常 | 將dtls_cipher_suites設(shè)置為NULL,使用默認(rèn)加密套件 |
四、RDTAPIs錯誤碼(范圍:-20000 至 -10000)
RDTAPIs 錯誤碼主要與可靠數(shù)據(jù)傳輸、通道配置相關(guān),具體說明如下:
| 錯誤碼 | 含義 | 解釋 | 建議 |
|---|---|---|---|
-10000 | RDT未初始化 | 未調(diào)用RDT_Initialize進(jìn)行初始化。 | 調(diào)用RDT_Initialize接口完成初始化后再進(jìn)行后續(xù)操作 |
-10002 | 已經(jīng)達(dá)到最大的通道數(shù)限制 | 如有調(diào)用RDT_Set_Max_Channel_Number設(shè)定最大通道數(shù),則SDK將在達(dá)到設(shè)定的最大通道數(shù)時提示此報錯。 | 檢查是否通道沒釋放,或者最大通道數(shù)設(shè)定太小,適當(dāng)調(diào)整最大通道數(shù)配置 |
-10007 | 超時 | 指定時間內(nèi)通道創(chuàng)建失敗,或者無數(shù)據(jù)可讀。 | 檢查網(wǎng)絡(luò)連接狀態(tài),適當(dāng)延長超時時間,確保兩端通信正常 |
-10017 | 發(fā)送buffer已滿 | 如有調(diào)用RDT_Set_Max_SendBuff_Size設(shè)定發(fā)送buffer大小,則在緩存區(qū)滿時返回。 | 優(yōu)化數(shù)據(jù)發(fā)送頻率,或增大發(fā)送buffer容量配置 |
-10023 | 遠(yuǎn)端不支持DTLS模式 | RDT_Client_Create以及RDT_Server_Create默認(rèn)開啟DTLS,如本端使用的是RDT_Client_Create以及RDT_Server_Create,對端使用的是RDT_Create,則會提示此報錯 | 兩端統(tǒng)一使用相同的創(chuàng)建接口:都用RDT_Create或者RDT_Client_Create和RDT_Server_Create組合 |
-10024 | 本端不支持DTLS | RDT_Client_Create以及RDT_Server_Create默認(rèn)開啟DTLS,如本端使用的是RDT_Create,對端使用的是RDT_Client_Create以及RDT_Server_Create,則會提示此報錯 | 兩端統(tǒng)一使用相同的創(chuàng)建接口:都用RDT_Create或者RDT_Client_Create和RDT_Server_Create組合 |
五、P2PTunnelAPIs錯誤碼(范圍:-40000 至 -30000)
P2PTunnelAPIs 錯誤碼主要與P2P隧道連接、端口映射、身份驗證相關(guān),具體說明如下:
| 錯誤碼 | 含義 | 解釋 | 建議 |
|---|---|---|---|
-30000 | P2PTunnelAPIs未初始化 | 未完成P2PTunnelAPIs的初始化操作 | 先調(diào)用初始化接口完成配置后再進(jìn)行連接操作 |
-30002 | 端口綁定失敗 | 端口映射時,將會使用本地的端口映射遠(yuǎn)程的業(yè)務(wù)端口,如果本地端口被占用,則會提示此報錯。 | 檢查本地端使用后是否有做解除映射,另外可以嘗試換個本地端口 |
-30006 | 連接斷開 | 兩端的連接已經(jīng)斷開。 | 關(guān)閉當(dāng)前連接,檢查網(wǎng)絡(luò)后重新建立連接 |
-30008 | 驗證失敗 | 兩端的username或者password驗證失敗。 | 檢查用戶名和密碼參數(shù)是否正確,確保兩端配置一致 |
-30010 | 無效的SID | 使用了一個無效的SID。 | 檢查連接是否被關(guān)閉,重新獲取有效的SID后重試 |
-30014 | 設(shè)備不在線 | 如果設(shè)備沒有到服務(wù)器報到,客戶端將在連線時找不到設(shè)備而提示此報錯。 | 檢查設(shè)備是否正常上線,確認(rèn)設(shè)備網(wǎng)絡(luò)連接狀態(tài) |
-30019 | 設(shè)備端已經(jīng)達(dá)到最大連接數(shù) | 設(shè)備端在初始化時將指定最大連接數(shù),如超過此連接數(shù),將提示報錯。 | 關(guān)閉閑置連接,或調(diào)整設(shè)備端最大連接數(shù)配置 |
-30024 | 本地已達(dá)最大連接數(shù) | 客戶端在初始化時將指定最大連接數(shù),如超過此連接數(shù),將提示報錯。 | 關(guān)閉不需要的連接,或調(diào)整客戶端最大連接數(shù)配置 |
-30028 | 遠(yuǎn)端不支持DTLS | SDK支持DTLS加密以及TUTK默認(rèn)加密,如果兩端加密不一致,則提示報錯。 | 統(tǒng)一兩端加密方式,確保加密配置一致 |
-30029 | 本端不支持DTLS | SDK支持DTLS加密以及TUTK默認(rèn)加密,如果兩端加密不一致,則提示報錯。 | 統(tǒng)一兩端加密方式,確保加密配置一致 |
-30042 | 連線設(shè)備失敗 | 通常出現(xiàn)在鎖屏,網(wǎng)絡(luò)切換,前后臺切換之后。 | 可以在這些情景出現(xiàn)后,斷開所有連接,然后用IOTC_ReinitSocket重新初始化socket,再重連設(shè)備 |
