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 - 錯誤程式碼。