合宙Air724UG LuatOS-Air core API--socket

本文介绍了套接字(socket)接口的几个核心函数,包括socketcore.sock_conn用于建立TCP/UDP/SSL连接,sock_send发送数据,sock_recv接收数据以及sock_close关闭连接。还提到了SSL套接字的加密认证和缓冲区管理。这些API适用于lib脚本,但用户应用脚本可以直接使用更高级别的socketAPI。
摘要由CSDN通过智能技术生成

socket
Table of Contents
socket
socketcore.sock_conn(type,addr,port[,cert][,recvBufferLen][,insist][,local_port][,hostNameFlag])
socketcore.sock_conn_ext(type,addr,port[,cert][,recvBufferLen][,insist][,local_port][,hostNameFlag])
socketcore.sock_send(socket_id,data)
socketcore.sock_getremainbuf(socket_id)
socketcore.sock_close(socket_id)
socketcore.sock_recv(socket_id,buff_len)
socket
socket(套接字)接口是建立和服务器通信的基础数据管道,有了这个接口就可以连接任何服务器,并进行数据通信

socketcore.sock_conn(type,addr,port[,cert][,recvBufferLen][,insist][,local_port][,hostNameFlag])
建立套接字连接。异步接口,连接结果通过rtos.recv()接口获取的消息返回

参数

参数 类型 释义 取值
type number 套接字类型 0/1/2/3,TCP/UDP/SSL/RAW
addr string 服务器地址 ip地址字符串,或者域名
port number 服务器端口 取值范围0-65535
cert table SSL套接字加密信息 可选参数[4]
recvBufferLen number 接收buffer大小 可选参数[5],单位字节,注意: 目前仅TCP和UDP支持,SSL不支持
insist number 单项认证校验失败是否坚持访问链接,默认连接,可选参数[6] 0/1,否/是
local_port number 本地端口 取值范围0-65535 当非SSL时可选参数[7]
hostNameFlag number 服务器域名是否上报,默认不上报,可选参数[8] 0/1,否/是
返回值

返回值 类型 释义 取值
result number 成功:套接字ID(>=0),失败:nil
例子

–[[
cert.hostName SSL套接字,服务器域名
cert.caCert SSL套接字,服务器证书
cert.clientCert SSL套接字,客户端证书
cert.clientKey SSL套接字,客户端密钥
]]
– TCP连接
socket_id = socketcore.sock_conn(0, “www.baidu.com”, 80)
– UDP连接
socket_id2 = socketcore.sock_conn(1, “36.7.87.100”, 6770)
– SSL连接
local cert = {hostName = address}
if self.cert then
if self.cert.caCert then
if self.cert.caCert:sub(1, 1) ~= “/” then self.cert.caCert = “/lua/” … self.cert.caCert end
cert.caCert = io.readFile(self.cert.caCert)
end
if self.cert.clientCert then
if self.cert.clientCert:sub(1, 1) ~= “/” then self.cert.clientCert = “/lua/” … self.cert.clientCert end
cert.clientCert = io.readFile(self.cert.clientCert)
end
if self.cert.clientKey then
if self.cert.clientKey:sub(1, 1) ~= “/” then self.cert.clientKey = “/lua/” … self.cert.clientKey end
cert.clientKey = io.readFile(self.cert.clientKey)
end
end
self.id = socketcore.sock_conn(2, address, port, cert)
end

此API仅推荐给lib脚本使用,不推荐用户应用脚本使用;
用户应用脚本可以直接使socket API,链接为:socket

socketcore.sock_conn_ext(type,addr,port[,cert][,recvBufferLen][,insist][,local_port][,hostNameFlag])
等同于socketcore.sock_conn()

参数

参数 类型 释义 取值
type number 套接字类型 0/1/2/3,TCP/UDP/SSL/RAW
addr string 服务器地址 ip地址字符串,或者域名
port number 服务器端口 取值范围0-65535
cert table SSL套接字加密信息 可选参数[4]
recvBufferLen number 接收buffer大小 可选参数[5],单位字节,注意: 目前仅TCP和UDP支持,SSL不支持
insist number 单项认证校验失败是否坚持访问链接,默认连接,可选参数[6] 0/1,否/是
local_port number 本地端口 取值范围0-65535 当非SSL时可选参数[7]
hostNameFlag number 服务器域名是否上报,默认不上报,可选参数[8] 0/1,否/是
返回值

返回值 类型 释义 取值
result number 成功:套接字ID(>=0),失败:nil
例子

–[[
cert.hostName SSL套接字,服务器域名
cert.caCert SSL套接字,服务器证书
cert.clientCert SSL套接字,客户端证书
cert.clientKey SSL套接字,客户端密钥
]]

此API仅推荐给lib脚本使用,不推荐用户应用脚本使用;
用户应用脚本可以直接使socket API,链接为:socket

socketcore.sock_send(socket_id,data)
发送数据

参数

参数 类型 释义 取值
socket_id number socketcore.sock_conn函数返回值 取值>=0
data string 需要发送的数据 string类型
返回值

返回值 类型 释义 取值
result1 boolean 0/1,失败/成功 0/1
result2 number 0/1/2/…,成功/错误码1/错误码2/… 0/1/2/…/20
此API仅推荐给lib脚本使用,不推荐用户应用脚本使用;
用户应用脚本可以直接使socket API,链接为:socket

socketcore.sock_getremainbuf(socket_id)
读取剩余缓冲区大小

参数

参数 类型 释义 取值
socket_id number socketcore.sock_conn函数返回值 取值>=0
返回值

返回值 类型 释义 取值
result number 当前剩余可用缓冲大小 单位b
socketcore.sock_close(socket_id)
关闭套接字连接。异步接口,关闭结果通过rtos.recv()接口获取的消息返回

参数

参数 类型 释义 取值
socket_id number socketcore.sock_conn函数返回值 取值>=0
返回值

返回值 类型 释义 取值
result boolean 0/1,失败/成功 0/1
此API仅推荐给lib脚本使用,不推荐用户应用脚本使用;
用户应用脚本可以直接使socket API,链接为:socket

socketcore.sock_recv(socket_id,buff_len)
接收数据

参数

参数 类型 释义 取值
socket_id number 套接字描述符 取值>=0
buff_len number 接收数据的缓冲区大小 取值>0
返回值

返回值 类型 释义 取值
result string 接收的数据 预留缓冲区首地址
例子

– 接收数据
– socket_id为socketcore.sock_conn返回的套接字描述符
local recv_len = 64
local data = socketcore.sock_recv(socket_id, recv_len)

用户应用脚本可以直接使socket API,链接为:[socket](https://doc.openluat.com/wiki/21?wiki_page_id=4193 "socket")

---



## socketcore.sock_destroy(socket_id)

释放套接字socketcore.sock_conn分配的内存

**参数**

|参数|类型|释义|取值|
|-|-|-|-|
|socket_id|number|socketcore.sock_conn函数返回值|取值>=0|

**返回值**

|返回值|类型|释义|取值|
|-|-|-|-|
|result|number| 0/1,失败/成功|0/1|

此API仅推荐给lib脚本使用,不推荐用户应用脚本使用;
用户应用脚本可以直接使socket API,链接为:[socket](https://doc.openluat.com/wiki/21?wiki_page_id=4193 "socket")

---



## socketcore.sock_setopt(sock_index,level,optname,optval)

socket的属性参数设置

**参数**

|参数|类型|释义|取值|
|-|-|-|-|
|sock_index|number|socketcore.sock_conn函数返回值|取值>=0|
|level|number|套接字类型选项|目前支持的level值:socketcore.SOL_SOCKET,socketcore.IPPROTO_TCP|
|optname|number|socket属性|目前支持的值:socketcore.SO_KEEPALIVE,socketcore.TCP_KEEPIDLE,socketcore.TCP_KEEPINTVL,socketcore.TCP_KEEPCNT,socketcore.SO_REUSEADDR|
|optval|number|对应的属性参数值|取值>=0|

**返回值**

|返回值|类型|释义|取值|
|-|-|-|-|
|result|number|0/-1,成功/失败|0/-1|

**例子**

```lua
socketcore.sock_setopt(id,socketcore.SOL_SOCKET, socketcore.SO_KEEPALIVE,1)
--开启保活功能

socketcore.sock_setopt(id,socketcore.IPPROTO_TCP, socketcore.TCP_KEEPIDLE,30)
--在30秒内,链接上无任何数据交互,则发送初始保活探针

socketcore.sock_setopt(id,socketcore.IPPROTO_TCP, socketcore.TCP_KEEPINTVL,60)
--如果保活探针发送失败,60s再次重传

socketcore.sock_setopt(id,socketcore.IPPROTO_TCP, socketcore.TCP_KEEPCNT,3)
--保活探针的最大重传数量为3
end

此API仅推荐给lib脚本使用,不推荐用户应用脚本使用;
用户应用脚本可以直接使socket API,链接为:socket
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l531798151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值