一、错误码概述
TUTK P2P SDK 各模块的错误码范围定义如下,不同模块的错误码范围不重叠,便于快速定位问题所属模块。
IOTCAPIs 错误码:∈(-10000,0)
AVAPIs 错误码:∈(-30000,-20000)
RDTAPIs 错误码:∈(-20000,-10000)
P2PTunnelAPIs 错误码:∈(-40000,-30000)
提示:错误码为负数表示异常,0 表示操作成功,完整的错误码请参考SDK目录下Readme.html第三部分。如果无法快速理清错误产生的原因的话,会需要借助于SDK的日志来分析。日志的开启方法,请参考章节:SDK日志的开启和保存。
二、IOTCAPIs错误码
IOTCAPIs 相关错误码主要涉及设备连接、服务器交互等核心通信场景,具体说明如下:
| 错误码 | 含义 | 解释 | 建议 |
|---|---|---|---|
-90 | 设备已经从P2P服务器掉线 | P2P服务器会定时扫描设备是否到P2P服务器上报,指定时间内没有心跳过来,会判定设备从这台服务器掉线 | 手动重启设备,或者设备端对login info进行监测,如发现掉线,则进行重启P2P模块 |
-60 | Master服务器无回应 | 通常是外网不畅,或者该UID没有P2P服务器提供服务。如果是设备大规模无法访问,多是没有挂载P2P服务器。如果只是个别设备,多是网络原因 | 如果大批量出现-60,推测应该是服务器问题,检查P2P服务器是否正常运行 |
-42 | 指定时间(默认60s)内无法建立连线,含LAN、P2P、RLY | 目前已知原因如下:
| 检查网络连接状态,关闭防火墙重试;若设备掉线,等待一段时间后重新连接 |
-33 | 无法连上P2P服务器 | 网络连接异常或P2P服务器端口未开放 | 检查网络连接和服务器端口配置,确保设备能正常访问P2P服务器 |
-27 | 本端主动中止连线 | 本端主动调用IOTC_Connect_Stop或者IOTC_Connect_Stop_bySID中止连线 | 确认是否需要主动断开连接,若为误操作,重新建立连接即可 |
-23 | 连接心跳超时 | 已经在指定时间(默认60s)内没有再收到对方的心跳 | 检查网络稳定性,适当调整心跳超时时间,或优化网络连接质量 |
-22 | 远端已经关闭IOTC连接 | 对方已经调用IOTC_Session_Close关闭了连接 | 确认对方是否正常退出,如需继续通信,重新发起连接请求 |
-2 | 无法解析master服务器域名 | 通常在外网不通情况下出现 | 检查设备网络连接和DNS配置,确保能正常解析服务器域名 |
-1 | P2P服务器没有回应 | 通常原因如下:
| 检查网络连接和服务器端口配置,确保P2P服务器正常运行 |
三、AVAPIs错误码
AVAPIs 错误码主要与音视频数据传输、通道管理相关,具体说明如下:
| 错误码 | 含义 | 解释 | 建议 |
|---|---|---|---|
-20027 | 通道已经被占用 | 经常见于avClientStart系列或者avServStart系列接口,原因是使用的IOTC Channel ID已经在使用了,还没有被释放 | 这个报错比较隐蔽,先加打印确认是否有正确释放通道。如是极小概率,也可以通过更换IOTC通道来规避 |
-20016 | 连接心跳超时,同-23 | 已经在指定时间(默认60s)内没有再收到对方的心跳 | 检查网络稳定性,适当延长超时时间,或优化网络传输质量 |
-20015 | 远端已经关闭IOTC连接,同-22 | 对方已经调用IOTC_Session_Close关闭了连接 | 确认对方连接状态,如需继续通信,重新建立AV通道连接 |
-20012 | 没有数据可以接收 | 通常见于avRecvFrameData2/avRecvAudioData。收的频率比对方送的频率高,就会出现,比如收100次,对方只送了50次,就会出现-20012 | 处理方式是在接收循环中添加sleep(5) ms,降低接收频率与发送频率匹配 |
-20011 | 超时 | 经常见于avRecvIOCtrl、avClientStart系列或者avServStart系列接口。不同接口,原因不一样:
| 先确认是哪个API返回,再根据不同的API做不同的处理。如果是通道建立失败,可以进行几次重连 |
-20000 | 参数错误 | 可能的原因为:
| 先确认是什么API返回此报错,检查参数合法性和avIndex状态,针对性地进行处理 |
-22244 | SSL版本不匹配 | 看起来是有link到其他的openssl/mbedtls,有一方用的ssl不是tutk的版本 | 可以使用static的library,确保两端使用相同版本的SSL库 |
-22193 / -54592 | DTLS配置错误 | DTLS加密配置参数异常 | 将dtls_cipher_suites设置为NULL,使用默认加密套件 |
四、RDTAPIs错误码(范围:-20000 至 -10000)
RDTAPIs 错误码主要与可靠数据传输、通道配置相关,具体说明如下:
| 错误码 | 含义 | 解释 | 建议 |
|---|---|---|---|
-10000 | RDT未初始化 | 未调用RDT_Initialize进行初始化。 | 调用RDT_Initialize接口完成初始化后再进行后续操作 |
-10002 | 已经达到最大的通道数限制 | 如有调用RDT_Set_Max_Channel_Number设定最大通道数,则SDK将在达到设定的最大通道数时提示此报错。 | 检查是否通道没释放,或者最大通道数设定太小,适当调整最大通道数配置 |
-10007 | 超时 | 指定时间内通道创建失败,或者无数据可读。 | 检查网络连接状态,适当延长超时时间,确保两端通信正常 |
-10017 | 发送buffer已满 | 如有调用RDT_Set_Max_SendBuff_Size设定发送buffer大小,则在缓存区满时返回。 | 优化数据发送频率,或增大发送buffer容量配置 |
-10023 | 远端不支持DTLS模式 | RDT_Client_Create以及RDT_Server_Create默认开启DTLS,如本端使用的是RDT_Client_Create以及RDT_Server_Create,对端使用的是RDT_Create,则会提示此报错 | 两端统一使用相同的创建接口:都用RDT_Create或者RDT_Client_Create和RDT_Server_Create组合 |
-10024 | 本端不支持DTLS | RDT_Client_Create以及RDT_Server_Create默认开启DTLS,如本端使用的是RDT_Create,对端使用的是RDT_Client_Create以及RDT_Server_Create,则会提示此报错 | 两端统一使用相同的创建接口:都用RDT_Create或者RDT_Client_Create和RDT_Server_Create组合 |
五、P2PTunnelAPIs错误码(范围:-40000 至 -30000)
P2PTunnelAPIs 错误码主要与P2P隧道连接、端口映射、身份验证相关,具体说明如下:
| 错误码 | 含义 | 解释 | 建议 |
|---|---|---|---|
-30000 | P2PTunnelAPIs未初始化 | 未完成P2PTunnelAPIs的初始化操作 | 先调用初始化接口完成配置后再进行连接操作 |
-30002 | 端口绑定失败 | 端口映射时,将会使用本地的端口映射远程的业务端口,如果本地端口被占用,则会提示此报错。 | 检查本地端使用后是否有做解除映射,另外可以尝试换个本地端口 |
-30006 | 连接断开 | 两端的连接已经断开。 | 关闭当前连接,检查网络后重新建立连接 |
-30008 | 验证失败 | 两端的username或者password验证失败。 | 检查用户名和密码参数是否正确,确保两端配置一致 |
-30010 | 无效的SID | 使用了一个无效的SID。 | 检查连接是否被关闭,重新获取有效的SID后重试 |
-30014 | 设备不在线 | 如果设备没有到服务器报到,客户端将在连线时找不到设备而提示此报错。 | 检查设备是否正常上线,确认设备网络连接状态 |
-30019 | 设备端已经达到最大连接数 | 设备端在初始化时将指定最大连接数,如超过此连接数,将提示报错。 | 关闭闲置连接,或调整设备端最大连接数配置 |
-30024 | 本地已达最大连接数 | 客户端在初始化时将指定最大连接数,如超过此连接数,将提示报错。 | 关闭不需要的连接,或调整客户端最大连接数配置 |
-30028 | 远端不支持DTLS | SDK支持DTLS加密以及TUTK默认加密,如果两端加密不一致,则提示报错。 | 统一两端加密方式,确保加密配置一致 |
-30029 | 本端不支持DTLS | SDK支持DTLS加密以及TUTK默认加密,如果两端加密不一致,则提示报错。 | 统一两端加密方式,确保加密配置一致 |
-30042 | 连线设备失败 | 通常出现在锁屏,网络切换,前后台切换之后。 | 可以在这些情景出现后,断开所有连接,然后用IOTC_ReinitSocket重新初始化socket,再重连设备 |
