101 lines
3.5 KiB
Markdown
101 lines
3.5 KiB
Markdown
# Библиотека *network*
|
|
|
|
Библиотека для работы с сетью.
|
|
|
|
## HTTP-запросы
|
|
|
|
```lua
|
|
-- Выполняет GET запрос к указанному URL.
|
|
-- После получения ответа, передаёт текст в функцию callback.
|
|
network.get(url: str, callback: function(str))
|
|
|
|
-- Пример:
|
|
network.get("https://api.github.com/repos/MihailRis/VoxelEngine-Cpp/releases/latest", function (s)
|
|
print(json.parse(s).name) -- выведет имя последнего релиза движка
|
|
end)
|
|
|
|
-- Вариант для двоичных файлов, с массивом байт вместо строки в ответе.
|
|
network.get_binary(url: str, callback: function(table|ByteArray))
|
|
```
|
|
|
|
## TCP-Соединения
|
|
|
|
```lua
|
|
network.tcp_connect(
|
|
-- Адрес
|
|
address: str,
|
|
-- Порт
|
|
port: int,
|
|
-- Функция, вызываемая при успешном подключении
|
|
-- До подключения отправка работать не будет
|
|
-- Как единственный аргумент передаётся сокет
|
|
callback: function(Socket)
|
|
) --> Socket
|
|
```
|
|
|
|
Инициирует TCP подключение.
|
|
|
|
Класс Socket имеет следующие методы:
|
|
|
|
```lua
|
|
-- Отправляет массив байт
|
|
socket:send(table|ByteArray)
|
|
|
|
-- Читает полученные данные
|
|
socket:recv(
|
|
-- Максимальный размер читаемого массива байт
|
|
length: int,
|
|
-- Использовать таблицу вместо Bytearray
|
|
[опционально] usetable: bool=false
|
|
) -> nil|table|Bytearray
|
|
-- В случае ошибки возвращает nil (сокет закрыт или несуществует).
|
|
-- Если данных пока нет, возвращает пустой массив байт.
|
|
|
|
-- Закрывает соединение
|
|
socket:close()
|
|
|
|
-- Проверяет, что сокет существует и не закрыт.
|
|
socket:is_alive() --> bool
|
|
|
|
-- Проверяет наличие соединения (доступно использование socket:send(...)).
|
|
socket:is_connected() --> bool
|
|
|
|
-- Возвращает адрес и порт соединения.
|
|
socket:get_address() --> str, int
|
|
```
|
|
|
|
```lua
|
|
-- Открывает TCP-сервер.
|
|
network.tcp_open(
|
|
-- Порт
|
|
port: int,
|
|
-- Функция, вызываемая при поключениях
|
|
-- Как единственный аргумент передаётся сокет подключенного клиента
|
|
callback: function(Socket)
|
|
) --> ServerSocket
|
|
```
|
|
|
|
Класс SocketServer имеет следующие методы:
|
|
|
|
```lua
|
|
-- Закрывает сервер, разрывая соединения с клиентами.
|
|
server:close()
|
|
|
|
-- Проверяет, существует и открыт ли TCP сервер.
|
|
server:is_open() --> bool
|
|
|
|
-- Возвращает порт сервера.
|
|
server:get_port() --> int
|
|
```
|
|
|
|
## Аналитика
|
|
|
|
```lua
|
|
-- Возвращает приблизительный объем отправленных данных (включая соединения с localhost)
|
|
-- в байтах.
|
|
network.get_total_upload() --> int
|
|
-- Возвращает приблизительный объем полученных данных (включая соединения с localhost)
|
|
-- в байтах.
|
|
network.get_total_download() --> int
|
|
```
|