Очередная сеть на OpenComputers модемах. Децентрализованная, одноранговая, как Zn, только лучше.
Каждый узел сети видит все остальные и может отправить/принять сообщение на любом расстоянии.
Отличия от сети Zn:
Динамическая маршрутизация. Zn затапливает все узлы каждым сообщением. Moonlink же передает сообщение по самому короткому пути и никто, кроме промежуточных узлов, сообщение не видит. При изменении топологии сети, маршруты перестраиваются.
Можно передавать больше одной строки за раз.
Установка:
wget https://raw.githubusercontent.com/OpenPrograms/zgyr-Programs/master/moonlink/moonlink.lua /usr/lib/moonlink.lua
или через oppm
oppm register OpenPrograms/zgyr-Programs
oppm install moonlink
Функции:
connect([порт: number]) подключиться к сети, стандартный порт 8431, можно задать свой.
disconnect() отключиться от сети.
send(адрес: string, ...) послать сообщение узлу с указанным адресом.
ping() принудительный пинг соседей (запрос маршрутов у соседних узлов).
list():table получить список доступных узлов в сети.
Событие только одно: moonlink_message(receiver_addr: string, ...) адрес получателя и сообщение.
Пример использования:
local event = require('event')
local moonlink = require('moonlink')
moonlink.connect()
while true do
local _, address, message = event.pull('moonlink_message')
if message == 'bye' then
break
else
print(message)
end
end
moonlink.disconnect()