Module socket

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

Info:

  • Copyright: openLuat
  • Release: 2017.9.25
  • License: MIT
  • Author: openLuat

Functions

tcp ([ssl=nil][, cert=nil]) 创建基于TCP的socket对象
udp () 创建基于UDP的socket对象
mt:connect (address, port[, timeout=120]) 连接服务器
mt:asyncSelect (keepAlive, pingreq) 异步收发选择器
mt:asyncSend (data[, timeout=nil]) 异步发送数据
mt:asyncRecv () 异步接收数据
mt:send (data[, timeout=120]) 发送数据
mt:recv ([timeout=0][, msg=nil][, msgNoResume=nil]) 接收数据
mt:close () 销毁一个socket
setTcpResendPara ([retryCnt=4][, retryMaxTimeout=16]) 设置TCP层自动重传的参数
setDnsParsePara ([retryCnt=4][, retryTimeoutMulti=4]) 设置域名解析参数 注意:0027以及之后的core版本才支持此功能
printStatus () 打印所有socket的状态

Fields

isReady SOCKET 是否有可用


Functions

tcp ([ssl=nil][, cert=nil])
创建基于TCP的socket对象

Parameters:

  • 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", --客户端证书文件密码[可选]
     }

Returns:

  • client,创建成功返回socket客户端对象;创建失败返回nil

Usage:

  • 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"})
udp ()
创建基于UDP的socket对象

Returns:

  • client,创建成功返回socket客户端对象;创建失败返回nil

Usage:

  • c = socket.udp()
mt:connect (address, port[, timeout=120])
连接服务器

Parameters:

  • address string
     服务器地址,支持ip和域名
  • port
     string或者number类型,服务器端口
  • timeout number [此参数可选,默认值为: 120]
     可选参数,连接超时时间,单位秒

Returns:

  1. bool result true - 成功,false - 失败
  2. string ,id '0' -- '8' ,返回通道ID编号

Usage:

  • c = socket.tcp(); c:connect();
mt:asyncSelect (keepAlive, pingreq)
异步收发选择器

Parameters:

  • keepAlive number
    服务器和客户端最大通信间隔时间,也叫心跳包最大时间,单位秒
  • pingreq string
    心跳包的字符串

Returns:

  • boole,false 失败,true 表示成功
mt:asyncSend (data[, timeout=nil])
异步发送数据

Parameters:

  • data string
     数据
  • timeout number [此参数可选,默认值为: nil]
     可选参数,发送超时时间,单位秒;为nil时表示不支持timeout

Returns:

  • result true - 成功,false - 失败

Usage:

  • c = socket.tcp(); c:connect(); c:asyncSend("12345678");
mt:asyncRecv ()
异步接收数据

Returns:

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

Usage:

  • c = socket.tcp(); c:connect()
  • data = c:asyncRecv()
mt:send (data[, timeout=120])
发送数据

Parameters:

  • data string
     数据
  • timeout number [此参数可选,默认值为: 120]
     可选参数,发送超时时间,单位秒

Returns:

  • result true - 成功,false - 失败

Usage:

  • c = socket.tcp(); c:connect(); c:send("12345678");
mt:recv ([timeout=0][, msg=nil][, msgNoResume=nil])
接收数据

Parameters:

  • timeout number [此参数可选,默认值为: 0]
     可选参数,接收超时时间,单位毫秒
  • msg string [此参数可选,默认值为: nil]
     可选参数,控制socket所在的线程退出recv阻塞状态
  • msgNoResume bool [此参数可选,默认值为: nil]
     可选参数,控制socket所在的线程退出recv阻塞状态,false或者nil表示“在recv阻塞状态,收到msg消息,可以退出阻塞状态”,true表示不退出

Returns:

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

Usage:

  • c = socket.tcp(); c:connect()
  • result, data = c:recv()
  • false,msg,param = c:recv(60000,"publish_msg")
mt:close ()
销毁一个socket

Returns:

  • nil

Usage:

  • c = socket.tcp(); c:connect(); c:send("123"); c:close()
setTcpResendPara ([retryCnt=4][, retryMaxTimeout=16])
设置TCP层自动重传的参数

Parameters:

  • retryCnt number [此参数可选,默认值为: 4]
    重传次数;取值范围0到12
  • retryMaxTimeout number [此参数可选,默认值为: 16]
    限制每次重传允许的最大超时时间(单位秒),取值范围1到16

Returns:

  • nil

Usage:

  • setTcpResendPara(3,8)
    setTcpResendPara(4,16)
setDnsParsePara ([retryCnt=4][, retryTimeoutMulti=4])
设置域名解析参数
 注意:0027以及之后的core版本才支持此功能

Parameters:

  • retryCnt number [此参数可选,默认值为: 4]
    重传次数;取值范围1到8
  • retryTimeoutMulti number [此参数可选,默认值为: 4]
    重传超时时间倍数,取值范围1到5
                    第n次重传超时时间的计算方式为:第n次的重传超时基数*retryTimeoutMulti,单位为秒
                    重传超时基数表为{1, 1, 2, 4, 4, 4, 4, 4}
                    第1次重传超时时间为:1*retryTimeoutMulti 秒
                    第2次重传超时时间为:1*retryTimeoutMulti 秒
                    第3次重传超时时间为:2*retryTimeoutMulti 秒
                    ...........................................
                    第8次重传超时时间为:8*retryTimeoutMulti 秒

Returns:

  • nil

Usage:

  • socket.setDnsParsePara(8,5)
printStatus ()
打印所有socket的状态

Returns:

Usage:

  • socket.printStatus()

Fields

isReady
SOCKET 是否有可用
generated by LDoc 1.4.6 Last updated 2020-04-11 23:40:56