Module socket
模块功能:数据链路激活、SOCKET管理(创建、连接、数据收发、状态维护)
Info:
- Copyright: openLuat
- Release: 2017.9.25
- License: MIT
- Author: openLuat
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的状态 |
-
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:
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:
Usage:
-
mt:connect (address, port[, timeout=120])
-
连接服务器
Parameters:
- address
string
服务器地址,支持ip和域名
- port
string或者number类型,服务器端口
- timeout
number
[此参数可选,默认值为: 120]
可选参数,连接超时时间,单位秒
Returns:
-
bool result true - 成功,false - 失败
-
string ,id '0' -- '8' ,返回通道ID编号
Usage:
-
mt:asyncSelect (keepAlive, pingreq)
-
异步收发选择器
Parameters:
Returns:
-
mt:asyncSend (data[, timeout=nil])
-
异步发送数据
Parameters:
Returns:
Usage:
-
mt:asyncRecv ()
-
异步接收数据
Returns:
-
nil, 表示没有收到数据
-
data 如果是UDP协议,返回新的数据包,如果是TCP,返回所有收到的数据,没有数据返回长度为0的空串
Usage:
-
mt:send (data[, timeout=120])
-
发送数据
Parameters:
- data
string
数据
- timeout
number
[此参数可选,默认值为: 120]
可选参数,发送超时时间,单位秒
Returns:
Usage:
-
mt:recv ([timeout=0][, msg=nil][, msgNoResume=nil])
-
接收数据
Parameters:
Returns:
-
result 数据接收结果,true表示成功,false表示失败
-
data 如果成功的话,返回接收到的数据;超时时返回错误为"timeout";msg控制退出时返回msg的字符串
-
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:
Usage:
-
setTcpResendPara ([retryCnt=4][, retryMaxTimeout=16])
-
设置TCP层自动重传的参数
Parameters:
Returns:
Usage:
-
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:
Usage:
-
printStatus ()
-
打印所有socket的状态
Returns:
Usage:
-
isReady
-
SOCKET 是否有可用