net - TCP-сокети

Функції для роботи з TCP-з’єднаннями на низькому рівні.

Модуль net надає доступ до сирих TCP-сокетів — як у ролі клієнта (підключення до сервера), так і у ролі сервера (очікування вхідних підключень). Для роботи з мережею Лілка повинна бути підключена до WiFi (див. wifi - Робота з WiFi-мережами).

Примітка

Для роботи з HTTP-запитами використовуйте модуль http - Робота з HTTP запитами. Для побудови HTTP-сервера зручніше використовувати httpserver - HTTP-сервер. Модуль net корисний, коли потрібно реалізувати власний протокол поверх TCP.

Приклад клієнтського підключення:

 1wifi.connect("MyWifi", "password")
 2
 3local fd, err = net.connect("example.com", 80)
 4if fd == nil then
 5    error("Помилка підключення: " .. err)
 6end
 7
 8net.send(fd, "GET / HTTP/1.0\r\nHost: example.com\r\n\r\n")
 9
10local data, err = net.receive(fd, 1024)
11if data then
12    print(data)
13end
14
15net.close(fd)

Приклад TCP-сервера:

 1wifi.connect("MyWifi", "password")
 2
 3local server_fd = net.listen(1234)
 4
 5function lilka.update(delta)
 6    local client_fd, client_ip = net.accept(server_fd, 0)
 7    if client_fd == nil then
 8        return
 9    end
10
11    print("Підключився:", client_ip)
12    local data = net.receive(client_fd, 256)
13    if data then
14        net.send(client_fd, "Отримано: " .. data)
15    end
16    net.close(client_fd)
17end
18
19function lilka.draw()
20    display.fill_screen(display.color565(0, 0, 0))
21    display.set_cursor(0, 16)
22    display.print("TCP-сервер запущено")
23end
class net
static connect(host, port, timeout_ms?)

Connects to a TCP server.

Parameters:
  • host (str) – Server hostname or IP address

  • port (integer) – Port number

  • timeout_ms? (integer) – Connect and I/O timeout in milliseconds (default: 5000)

Returns:

fd Socket file descriptor, or nil on error

Return type:

integer or nil

Returns:

? errmsg Error message on failure

Return type:

str

static send(fd, data)

Sends data over a socket.

Parameters:
  • fd (integer) – Socket file descriptor

  • data (str) – Data to send

Returns:

bytes_sent Number of bytes sent, or nil on error

Return type:

integer or nil

Returns:

? errmsg Error message on failure

Return type:

str

static receive(fd, max_bytes?, timeout_ms?)

Receives data from a socket (blocks until data arrives or timeout).

Parameters:
  • fd (integer) – Socket file descriptor

  • max_bytes? (integer) – Maximum bytes to read (default: 1024)

  • timeout_ms? (integer) – Override receive timeout in ms; -1 keeps the current setting

Returns:

data Received data, or nil on timeout/close/error

Return type:

str or nil

Returns:

? errmsg «timeout» | «connection closed» | error description

Return type:

str

static close(fd)

Closes a socket.

Parameters:

fd (integer) – Socket file descriptor

static settimeout(fd, timeout_ms)

Sets the send and receive timeout for a socket.

Parameters:
  • fd (integer) – Socket file descriptor

  • timeout_ms (integer) – Timeout in milliseconds

static listen(port, backlog?)

Creates a TCP server socket bound to the given port and starts listening.

Parameters:
  • port (integer) – Port to listen on

  • backlog? (integer) – Connection backlog (default: 5)

Returns:

fd Server socket file descriptor, or nil on error

Return type:

integer or nil

Returns:

? errmsg Error message on failure

Return type:

str

static accept(server_fd, timeout_ms?)

Accepts an incoming connection on a server socket.

Returns the client socket fd and the client’s IP address string.

Parameters:
  • server_fd (integer) – Server socket file descriptor

  • timeout_ms? (integer) – How long to wait for a connection in ms; -1 = no timeout

Returns:

client_fd Client socket fd, or nil on timeout/error

Return type:

integer or nil

Returns:

client_ip_or_errmsg Client IP address on success, or error message

Return type:

str