Alcor6L/eLua/net
外观
< Alcor6L
此模块包含从 eLua 访问 TCP/IP 网络的函数。 只有在启用网络支持的情况下才能启用它(有关详细信息,请参阅构建)。
注意:eLua 中的 TCP/IP 支持尚处于实验阶段。 虽然功能齐全,但速度仍然很慢,并且存在许多其他问题。 它在未来很可能会发生重大变化,因此请预计此模块也会发生重大变化。 eLua 仅支持 TCP 套接字。
大多数网络函数返回一个错误代码,以说明操作是否成功。
- net.ERR_OK - 操作成功。
- net.ERR_TIMEDOUT - 操作超时
- net.ERR_CLOSED - 您尝试连接到已关闭的端口
- net.ERR_ABORTED - 操作中止
- net.ERR_OVERFLOW - 操作溢出
返回 IP 地址的内部表示形式,该地址可用于 net 模块中所有期望 IP 地址参数的函数。 IP 被认为是 ip1.ip2.ip3.ip4 格式。
ip = net.packip( ip1, ip2, ip3, ip4 )
- ip1 - IP 地址的第一部分。
- ip2 - IP 地址的第二部分。
- ip3 - IP 地址的第三部分。
- ip4 - IP 地址的第四部分。
ip = net.packip( str )
- str - 字符串格式的 IP 地址,例如 '192.168.1.1'。
返回
- ip - 以内部格式编码 IP 地址的整数。
返回由 net.packip 编码的 IP 地址的解包表示形式。
ip1, ip2, ip3, ip4 = net.unpackip( ip, '*n' )
- ip - 编码的 IP 地址。
返回
- ip1 - IP 地址的第一部分。
- ip2 - IP 地址的第二部分。
- ip3 - IP 地址的第三部分。
- ip4 - IP 地址的第四部分。
ip = net.unpackip( ip, '*s' )
- ip - 编码的 IP 地址。
返回
- ip - 字符串格式的 IP 地址。
执行 DNS 查找。
ip = net.lookup( hostname )
- hostname - 计算机的名称。
返回
- ip - 计算机的 IP 地址。
创建用于 TCP/IP 通信的套接字。
socket = net.socket( type )
- type - 可以是 net.SOCK_STREAM 用于 TCP 套接字或 net.SOCK_DGRAM 用于 UDP 套接字(尚未支持)。
返回:将在后续操作中使用的套接字。
关闭套接字。
res = net.close( socket )
- socket - 要关闭的套接字。
返回
- res - 错误代码。
将套接字连接到远程系统。
err = net.connect( sock, ip, port )
- sock - 从 net.socket 获取的套接字。
- ip - 从 net.packip 获取的 IP 地址。
- port - 要连接到的端口。
返回
- err - 错误代码。
接受来自远程系统(可选超时)的连接。
socket, remoteip, err = net.accept( port, [timer_id, timeout] )
- port - 等待来自远程系统的连接的端口。
- timer_id(可选) - 用于测量超时的计时器的 ID。 使用 nil 或 tmr.SYS_TIMER 指定系统计时器。
- timeout(可选) - 操作超时,可以是 net.NO_TIMEOUT 或 0 用于非阻塞操作,net.INF_TIMEOUT 用于阻塞操作,或者一个正数,指定超时时间(微秒)。 此参数的默认值为 unet.INF_TIMEOUT。
返回
- socket - 接受远程连接后创建的套接字。
- remoteip - 远程系统的 IP。
- err - 错误代码。
将数据发送到套接字。
res, err = net.send( sock, str )
- sock - 套接字。
- str - 要发送的数据。
返回
- res - 实际发送的字节数或 -1 表示错误。
- err - 错误代码。
从套接字读取数据。
res, err = net.recv( sock, format, [timer_id, timeout] )
- sock - 套接字。
- format - 如何读取数据。 这可以是:
- "*l": 读取一行(直到下一个 '\n' 字符)。
- 整数:读取最多这么多字节。
- timer_id(可选) - 用于测量超时的计时器的 ID。 使用 nil 或 tmr.SYS_TIMER 指定系统计时器。
- timeout(可选) - 操作超时,可以是 net.NO_TIMEOUT 或 0 用于非阻塞操作,net.INF_TIMEOUT 用于阻塞操作,或者一个正数,指定超时时间(微秒)。 此参数的默认值为 net.INF_TIMEOUT。
返回
- res - 读取的字节数。
- err - 错误代码。