当前位置:   article > 正文

LuaSocket_lua socket

lua socket

TCP

插座。tcp()

创建并返回一个 TCP 主对象。可以将主对象转换为使用方法listen(在调用bind 之后)的服务器对象, 或使用方法connect转换为客户端对象。主对象支持的唯一其他方法是 close方法。

如果成功,则返回一个新的主对象。如果出现错误, 则返回nil,然后是错误消息。

服务器:接受()

等待服务器对象上的远程连接并返回代表该连接的客户端对象。

如果连接成功启动,则返回一个客户端对象。如果满足超时条件,则该方法返回nil 后跟错误字符串 ' timeout '。其他错误由nil报告,后跟描述错误的消息。

注:调用socket.select 与在服务器对象recvt 参数呼叫前 接受并 不能保证 接受将立即返回。使用settimeout方法或accept 可能会阻塞,直到另一个客户端出现。

主:绑定(地址,端口

将主对象绑定到本地主机上的地址和端口。

地址可以是 IP 地址或主机名。 端口必须是 [0..64K) 范围内的整数。如果地址 是“ * ”,则系统使用INADDR_ANY常量绑定到所有本地接口。如果端口为 0,系统会自动选择一个临时端口。

如果成功,该方法返回 1。如果出错,该方法返回nil,后跟错误消息。

注意:socket.bind函数 可用,是创建服务器套接字的快捷方式。

主人:close()
客户端:close()
服务器:close()

关闭一个 TCP 对象。对象使用的内部套接字被关闭,对象绑定到的本地地址可供其他应用程序使用。不允许对关闭的套接字进行进一步的操作(除了对close方法的进一步调用)。

注意:在不需要时关闭所有使用的套接字很重要,因为在许多系统中,每个套接字使用一个文件描述符,这是有限的系统资源。但是,垃圾收集对象在销毁之前会自动关闭。

主:连接(地址,端口

尝试将主对象连接到远程主机,将其转换为客户端对象。客户端对象支持方法 send、 receive、 getsockname、 getpeername、 settimeoutclose

地址可以是 IP 地址或主机名。 端口必须是 [1..64K) 范围内的整数。

如果出现错误,该方法返回nil后跟一个描述错误的字符串。如果成功,该方法返回 1。

注意:socket.connect函数 可用,是创建客户端套接字的快捷方式。

注意:从 LuaSocket 2.0 开始,settimeout 方法会影响connect的行为,导致它在超时时返回错误。如果发生这种情况,您仍然可以使用sendt表中的套接字 调用socket.select。建立连接后,套接字将是可写的。

客户端:getpeername()

返回有关已连接客户端对象的远程端的信息。

返回一个字符串,其中包含对等方的 IP 地址,后跟对等方用于连接的端口号。如果出现错误,该方法返回nil

注意:在服务器对象上调用这个方法是没有意义的。

主:getsockname()
客户端:getsockname()
服务器:getsockname()

返回与对象关联的本地地址信息。

该方法返回一个带有本地 IP 地址的字符串和一个带有端口的数字。如果出现错误,该方法返回nil

主:getstats()
客户端:getstats()
服务器:getstats()

返回有关套接字的记帐信息,可用于限制带宽。

该方法返回接收的字节数、发送的字节数和套接字对象的年龄(以秒为单位)。

主人:听(积压

指定套接字愿意接收连接,将对象转换为服务器对象。服务器对象支持 accept、 getsockname、 setoption、 settimeoutclose方法。

参数backlog指定可以排队等待服务的客户端连接数。如果队列已满并且另一个客户端尝试连接,则连接将被拒绝。

如果成功,该方法返回 1。如果出错,该方法返回nil,后跟错误消息。

客户端:接收( [模式[,前缀]] 

根据指定的读取模式从客户端对象读取数据。模式遵循 Lua 文件 I/O 格式,所有模式之间的性能差异可以忽略不计。

模式可以是以下任何一种:

  • ' *a ':从套接字读取直到连接关闭。不执行行尾翻译;
  • ' *l ':从套接字读取一行文本。该行以 LF 字符 (ASCII 10) 结束,可选地以 CR 字符 (ASCII 13) 开头。CR 和 LF 字符不包含在返回的行中。事实上,模式会忽略所有CR 字符。这是默认模式;
  • number:使该方法 从套接字读取指定数量的字节。

Prefix是一个可选字符串,在返回之前连接到任何接收到的数据的开头。

如果成功,该方法返回接收到的模式。如果出现错误,该方法将返回nil后跟一条错误消息,该消息可以是字符串“ closed ”,以防在传输完成之前关闭连接,或者字符串“ timeout ”,以防操作期间超时。此外,在错误消息之后,该函数返回传输的部分结果。

重要说明:此功能被改变严重。它曾经支持多种模式(但我从未见过使用此功能),现在不再支持。过去部分结果的返回方式与成功结果的返回方式相同。最后一个特性违反了所有函数都应该在出错时返回nil的想法。于是也改了。

客户端:发送(数据[,我[,j]] 

通过客户端对象 发送数据。

数据是要发送的字符串。可选参数 i和j 的工作方式与标准string.sub Lua 函数完全一样 ,允许选择要发送的子字符串。

如果成功,该方法返回已发送的[i, j]中最后一个字节的索引。请注意,如果 i为 1 或不存在,则这实际上是发送的总字节数。如果出现错误,该方法返回 nil,后跟错误消息,后跟[i, j]中已发送的最后一个字节的索引。您可能想从后面的字节再试一次。如果在传输完成之前连接已关闭,则错误消息可以是“关闭”,或者在操作期间出现超时的情况下,可以是字符串“超时”。

注意:输出没有缓冲。对于小字符串,最好在 Lua 中连接它们(使用 ' .. ' 运算符)并在一次调用中发送结果,而不是多次调用该方法。

客户端:setoption( option [, value] )
服务器:setoption( option [, value] )

设置 TCP 对象的选项。只有低级别或时间关键的应用程序需要选项。只有在确定需要时才应该修改选项。

Option是带有选项名称的字符串,值 取决于设置的选项:

  • ' keepalive ':将此选项设置为true可在连接的套接字上定期传输消息。如果连接方未能响应这些消息,则认为连接已断开并通知使用套接字的进程;
  • ' linger ':控制未发送的数据在套接字上排队并执行关闭时采取的操作。该值是一个带有布尔条目“ on ”和时间间隔“ timeout ”(以秒为单位)的数字条目的表。如果“ on ”字段设置为 true,系统将在关闭尝试时阻止进程,直到它能够传输数据或直到“超时”过去。如果“ on ”为假并且发出关闭,系统将以允许进程尽快继续的方式处理关闭。我不建议您将其设置为零以外的任何值;
  • ' reuseaddr ':设置这个选项表示用于验证绑定调用中提供的地址的规则 应该允许重用本地地址;
  • ' tcp-nodelay ':将此选项设置为true 将禁用连接的 Nagle 算法。

如果成功,该方法返回 1,否则返回nil

注意:以上描述来自手册页。

主:setstats(接收,发送,年龄
客户端:setstats(接收,发送,年龄
服务器:setstats(接收,发送,年龄

重置套接字上的记帐信息,对带宽限制很有用。

Received是一个带有新接收字节数的数字。 Sent是一个带有新发送字节数的数字。 年龄是以秒为单位的新时代。

该方法在成功的情况下返回 1,否则返回nil

master: settimeout( value [, mode] )
客户端: settimeout( value [, mode] )
server: settimeout( value [, mode] )

更改对象的超时值。默认情况下,所有 I/O 操作都是阻塞的。也就是说,对方法send、 receive和 accept 的任何调用 都将无限期地阻塞,直到操作完成。所述 的setTimeout 方法定义在时间的I / O方法可以阻断量的限制。当设置了超时并且经过了指定的时间量时,受影响的方法会放弃并失败并显示错误代码。

等待的时间量指定为 value参数,以秒为单位。有两种超时模式,可以一起使用进行微调:

  • ' b ':超时。指定操作系统在等待任何单个 I/O 操作完成时可以阻止 LuaSocket 的时间上限。这是默认模式;
  • ' t ': 超时。指定 LuaSocket 在调用返回之前可以阻塞 Lua 脚本的时间上限。

在  超时 值允许操作无限期地阻塞。负超时值具有相同的效果。

注意:虽然 LuaSocket 中的超时值具有毫秒精度,但由于库将块传输到 OS 和从 OS 传输到 Lua 解释器和从 Lua 解释器传输块所需的时间,大块会导致 I/O 函数不遵守超时值。此外,接受主机名并执行自动名称解析的函数可能会被解析器阻止超过指定的超时值。

注意:不推荐使用旧的超时方法。为了统一起见,名称已更改,因为所有其他方法名称都已包含动词,这使得它们的命令性性质显而易见。

客户端:关机(模式

关闭部分全双工连接。

Mode 告诉应该关闭哪种连接方式并可以取值:

  • “ both ”:禁止在对象上进一步发送和接收。这是默认模式;
  • “发送”:禁止进一步发送对象;
  • “接收”:禁止进一步接收对象。

此函数返回 1。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/940464
推荐阅读
相关标签
  

闽ICP备14008679号