Допустим, есть компьютеры A и B, в каждом по сетевой плате (с адресами AAA и BBB), и они соединены проводами.
Надо выбрать порт для передачи сообщений - число от 1 до 65535.
Затем на сетевой карте приёмника необходимо открыть этот порт (работает до перезагрузки или до закрытия порта):
local modemB = require 'component'.modem
modemB.open(<открываемый порт>)
Теперь с компьютера A можно посылать сообщения - либо широковещательные (всем в сети), либо адресные (кому-то конкретному).
local modemA = require 'component'.modem
modemA.send('<адрес B>', <выбранный порт>, <данные...>)
-- или modemA.broadcast(<порт>, <данные...>)
На компьютере B начнут появляться события modem_message, и их можно посмотреть программой dmesg. Как поймать их кодом:
local evt = require 'event'
local _, receiver, sender, port, distance, data = evt.pull 'modem_message'
print(sender, '->', data)
Дальше к этому можно прикрепить evt.listen, в зависимости от задачи. Можно сделать автозакрытие порта по выходу из программы, хотя этого я ни разу вроде не видел.
Полезные ссылки:
https://ocdoc.cil.li/component:modem - API сетевой карты;
https://ocdoc.cil.li/component:signals - сигналы компонентов.