Надежная многоадресная связь в локальной сети - PullRequest
1 голос
/ 08 февраля 2011

У меня есть сетевое приложение, работающее на Linux. Я хочу, чтобы мое приложение сообщало о своем присутствии в локальной сети, а затем уведомляло другие приложения о некоторых изменениях. Поскольку я не знаю, сколько экземпляров моего приложения уже работает на других хостах в локальной сети, я не могу использовать SCTP, многоадресная связь является единственным способом (или, может быть, вы знаете другое решение?).

Структура, которую я хочу отправить по многоадресному адресу, имеет фиксированный размер (320 байт) и содержит двоичные данные, которые фактически представляют собой структуру чисел и битовых флагов.

Мне интересно, есть ли какие-либо хорошо известные методы программирования, которые могут сделать UDP-связь более надежной. Я понял только две вещи:

  1. Я отбрасываю все пакеты, полученные recvmsg (), размер которых меньше 320 байт.
  2. Я окружаю каждый пакет хорошо известным заголовком и нижним колонтитулом, а затем проверяю их каждый раз при получении нового сообщения, однако пакет все еще может быть поврежден где-то посередине справа?

Изменить: Я нашел протокол PGN, но известно, что единственная реализация Linux работает на x86. Для меня это частичное решение, потому что я тоже хочу запустить свою программу на архитектуре ARM

1 Ответ

3 голосов
/ 10 февраля 2011

Вы можете попробовать портировать PGM на ARM, в OpenPGM не так много требований, он, например, уже отлично работает на мэйнфреймах IBM s390.

Раскрытие информации: я автор OpenPGM \:D/

...