Я использовал socat
для настройки такого эхо-сервера UDP:
$ socat UDP4-LISTEN:54321,fork EXEC:cat
эхо-клиент $ echo -n "hello" | nc -4u -w1 192.168.56.101 54321
hello
При отладке мне нравится отслеживать сеть, поэтому я буду запускать это для мониторинга «эхо-сервера»
$ tcpdump -i any -vnn port 54321
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
22:33:21.280053 IP (tos 0x0, ttl 64, id 8684, offset 0, flags [none], proto UDP (17), length 33)
192.168.56.1.62439 > 192.168.56.101.54321: UDP, length 5
22:33:21.282140 IP (tos 0x0, ttl 64, id 40761, offset 0, flags [DF], proto UDP (17), length 33)
192.168.56.101.54321 > 192.168.56.1.62439: UDP, length 5
ПРИМЕЧАНИЕ.:Этот вышеприведенный совет можно сильно изменить для отладки всего, что происходит между вашим сервером socat/nc и его клиентами.
Я тоже нахожу конфигурациюsocat
утомительной временами. Но, как и все остальное, его легче понять, если разбить его на более мелкие части.
$ socat -v udp4-datagram:172.24.176.116:54321 \
open:/dev/ttyUSB0,raw,nonblock,waitlock=/tmp/s0.locak,echo=0,b115200,crnl
Таким образом, первые 2 переключателя должны быть несколько очевидными:
-v
-подробный udp4-datagram:172.24.176.207:54321
-Прослушивание UDP на порту 54321 open:/dev/ttyUSB0
-настраивает отправку ввода/вывода на устройство USB #0 raw
-необработанный режим,пропускает ввод/вывод без обработки nonblock
-открывает/использует файлы в неблокирующем режиме waitlock=/tmp/s0.locak
-создает файл блокировки ожидания -защищает от нескольких socat
echo=0
-отключает локальное эхо на сервере b115200
-устанавливает скорость передачи 115 200 бит crnl
-преобразует новые строки из \n
в\r\n
Между прочим, если вы посмотрите на справочную страницу socat
, там много примеров. Также есть полные описания вышеперечисленных переключателей.