socket - 数据链路激活、SOCKET管理(创建、连接、数据收发、状态维护)
适用范围
| 层面 | 说明 |
|---|---|
| 运行环境 | LuatOS-Air 脚本框架,展锐 8910 平台(Air724UG / Air722UG / Air795UG / Air720UH 等) |
| 前提条件 | 需链路层已就绪(4G / 以太网 / WiFi 任一),即 link.isReady() 为 true |
| 不适用 | Air780E 及以后跑 LuatOS 的 Cat.1 模组;这些模组的同名库在 osapi 里是另一套接口,不能照抄 |
socket.isReady()
SOCKET 是否有可用
参数
无
返回值
可用true,不可用false
例子
无
socket.tcp(ssl, cert, tCoreExtPara)
创建基于TCP的socket对象
参数
| 名称 | 传入值类型 | 释义 |
|---|---|---|
| ssl | bool | 可选参数,默认为nil 是否为ssl连接,true表示是,其余表示否 |
| cert | table | 可选参数,默认为nil ssl连接需要的证书配置,只有ssl参数为true时,此参数才有意义,cert格式如下:{ caCert = "ca.crt", --CA证书文件(Base64编码 X.509格式),如果存在此参数,则表示客户端会对服务器的证书进行校验;不存在则不校验 clientCert = "client.crt", --客户端证书文件(Base64编码 X.509格式),服务器对客户端的证书进行校验时会用到此参数 clientKey = "client.key", --客户端私钥文件(Base64编码 X.509格式) clientPassword = "123456", --客户端证书文件密码[可选] } |
| tCoreExtPara | table | 可选参数,默认为nil 建立链接扩展参数,4G链接和ch395链接所需扩展参数不一样 |
返回值
client,创建成功返回socket客户端对象;创建失败返回nil
例子
c = socket.tcp()
c = socket.tcp(true)
c = socket.tcp(true, {caCert="ca.crt"})
c = socket.tcp(true, {caCert="ca.crt", clientCert="client.crt", clientKey="client.key"})
c = socket.tcp(true, {caCert="ca.crt", clientCert="client.crt", clientKey="client.key", clientPassword="123456"})
socket.udp()
创建基于UDP的socket对象
参数
无
返回值
client,创建成功返回socket客户端对象;创建失败返回nil
例子
c = socket.udp()
socket.setTcpResendPara(retryCnt, retryMaxTimeout)
设置TCP层自动重传的参数
参数
| 名称 | 传入值类型 | 释义 |
|---|---|---|
| retryCnt | number | 可选参数,默认为4 重传次数;取值范围0到12 |
| retryMaxTimeout | number | 可选参数,默认为16 限制每次重传允许的最大超时时间(单位秒),取值范围1到16 |
返回值
nil
例子
setTcpResendPara(3,8)
setTcpResendPara(4,16)
socket.setDnsParsePara(retryCnt, retryTimeoutMulti)
设置域名解析参数
注意:0027以及之后的core版本才支持此功能
参数
| 名称 | 传入值类型 | 释义 |
|---|---|---|
| retryCnt | number | 可选参数,默认为4 重传次数;取值范围1到8 |
| retryTimeoutMulti | number | 可选参数,默认为4 重传超时时间倍数,取值范围1到5第n次重传超时时间的计算方式为:第n次的重传超时基数retryTimeoutMulti,单位为秒 重传超时基数表为{1, 1, 2, 4, 4, 4, 4, 4} 第1次重传超时时间为:1retryTimeoutMulti 秒 第2次重传超时时间为:1retryTimeoutMulti 秒 第3次重传超时时间为:2retryTimeoutMulti 秒 ........................................... 第8次重传超时时间为:8*retryTimeoutMulti 秒 |
返回值
nil
例子
socket.setDnsParsePara(8,5)
socket.printStatus()
打印所有socket的状态
参数
无
返回值
无
例子
socket.printStatus()
socket.setLowPower(tm)
设置数据传输后,允许进入休眠状态的延时时长
3024版本以及之后的版本才支持此功能
此功能设置的参数,设置成功后,掉电会自动保存
参数
| 名称 | 传入值类型 | 释义 |
|---|---|---|
| tm | number | 数据传输后,允许进入休眠状态的延时时长,单位为秒,取值范围1到20 注意:此时间越短,允许进入休眠状态越快,功耗越低;但是在某些网络环境中,此时间越短,可能会造成数据传输不稳定 建议在可以接受的功耗范围内,此值设置的越大越好 如果没有设置此参数,此延时时长是和基站的配置有关,一般来说是10秒左右 |
返回值
nil
例子
socket.setLowPower(5)