socket

socket

模块功能:数据链路激活、SOCKET管理(创建、连接、数据收发、状态维护)

socket.isReady()

SOCKET 是否有可用

  • 参数

  • 返回值

可用true,不可用false

  • 例子


socket.tcp(ssl, cert)

创建基于TCP的socket对象

  • 参数

传入值类型

释义

bool

可选参数 ,默认为``nil``,ssl,是否 为ssl连接,true表示是,其余表示否

table

可选参数,默认为` `nil``,cert,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”, –客户端证书文件密码[可选]}

  • 返回值

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()

mt:connect(address, port, timeout)

连接服务器

  • 参数

传入值类型

释义

string

address 服务器地址,支持ip和域名

param

port string或者number类型,服务器端口

number

可选参数,默认为``120``,timeout 可选参数,连接超时时间,单位秒

  • 返回值

bool result true - 成功,false - 失败 string ,id ‘0’ – ‘8’ ,返回通道ID编号

  • 例子

c = socket.tcp(); c:connect();

mt:asyncSelect(keepAlive, pingreq)

异步收发选择器

  • 参数

传入值类型

释义

number

keepAlive,服 务器和客户端最大通信间隔时间,也叫心跳包最大时间,单位秒

string

pingreq,心跳包的字符串

  • 返回值

boole,false 失败,true 表示成功

  • 例子


mt:asyncSend(data, timeout)

异步发送数据

  • 参数

传入值类型

释义

string

data 数据

number

可选参数,默认为``nil``,timeout 可 选参数,发送超时时间,单位秒;为nil时表示不支持timeout

  • 返回值

result true - 成功,false - 失败

  • 例子

c = socket.tcp(); c:connect(); c:asyncSend("12345678");

mt:asyncRecv()

异步接收数据

  • 参数

  • 返回值

nil, 表示没有收到数据 data 如果是UDP协议,返回新的数据包,如果是TCP,返回所有收到的数据,没有数据返回长度为0的空串

  • 例子

c = socket.tcp(); c:connect()
data = c:asyncRecv()

mt:send(data, timeout)

发送数据

  • 参数

传入值类型

释义

string

data 数据此处传入的数据长度和剩余可 用内存有关,只要内存够用,可以随 便传入数据虽然说此处的数据长度没 有特别限制,但是调用core中的sock et发送接口时,每次最多发送11200字 节的数据例如此处传入的data长度是1 12000字节,则在这个send接口中,会 循环10次,每次发送11200字节的数据

number

可选参 数,默认为``120``,timeout 可选参数,发送超时时间,单位秒

  • 返回值

result true - 成功,false - 失败

  • 例子

c = socket.tcp(); c:connect(); c:send("12345678");

mt:recv(timeout, msg, msgNoResume)

接收数据

  • 参数

传入值类型

释义

number

可选 参数,默认为``0``,timeout 可选参数,接收超时时间,单位毫秒

string

可 选参数,默认为``nil``,msg 可选参数,控制 socket所在的线程退出recv阻塞状态

bool

可选参数, 默认为``nil``,msgNoResume 可选参数,控制socket所在的线程 退出recv阻塞状态,false或者nil表 示“在recv阻塞状态,收到msg消息, 可以退出阻塞状态”,true表示不退出

  • 返回值

result 数据接收结果,true表示成功,false表示失败 data 如果成功的话,返回接收到的数据;超时时返回错误为“timeout”;msg控制退出时返回msg的字符串 param 如果是msg返回的false,则data的值是msg,param的值是msg的参数

  • 例子

c = socket.tcp(); c:connect()
result, data = c:recv()
false,msg,param = c:recv(60000,"publish_msg")

mt:close()

销毁一个socket

  • 参数

  • 返回值

nil

  • 例子

c = socket.tcp(); c:connect(); c:send("123"); c:close()

socket.setTcpResendPara(retryCnt, retryMaxTimeout)

设置TCP层自动重传的参数

  • 参数

传入值类型

释义

number

可选参数 ,默认为``4``,retryCnt,重传次数;取值范围0到12

number

可选参数,默认为``16``,retryMaxTimeout, 限制每次重传允许的最大超时时间(单位秒),取值范围1到16

  • 返回值

nil

  • 例子

setTcpResendPara(3,8)
setTcpResendPara(4,16)

socket.setDnsParsePara(retryCnt, retryTimeoutMulti)

设置域名解析参数

注意:0027以及之后的core版本才支持此功能

  • 参数

传入值类型

释义

number

可选参数,默认为``4``, retryCnt,重传次数;取值范围1到8

number

可选参数,默 认为``4``,retryTimeoutMult i,重传超时时间倍数,取值范围1到5 第n次重传超时时间的计算方式为:第 n次的重传超时基数retryTimeoutM ulti,单位为秒重传超时基数表为{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()