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 addressport (
integer) – Port numbertimeout_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 descriptordata (
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 descriptormax_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 descriptortimeout_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 onbacklog? (
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 descriptortimeout_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