2014-09-27 4 views
-1

У меня есть два компьютера, которые обмениваются данными по серийному модему. Я хотел бы иметь протокол надежности на этой линии.Надежность по последовательному соединению

Я занимаюсь PPP, SLIP и RATP. Не все из них лучше всего подходят, и я не хочу писать весь этот код, особенно если есть хорошая база кода для этого онлайн.

Есть ли в C# проект библиотеки или кода, который может быть использован для этой цели? Если нет того протокола, который вы рекомендуете реализовать?

Скорость подключения 9600, но объем отправленных данных невелик, и скорость не является большой проблемой. Простота и легкость развития!

+0

Обычный способ сделать это в последовательном протоколе - это вычислить CRC сообщения и добавить его в конце сообщения. Приемник может проверить CRC и отправить NAK, когда он не соответствует. Отправитель должен ответить на NAK, отправив сообщение. Когда он получен правильно, он должен отправить ACK, чтобы подтвердить, что сообщение поступило правильно. В Google есть много примеров того, как реализовать CRC в C#. Но самым простым способом было бы переключиться на Ethernet и использовать TCP/IP, и вы получите бесплатную обработку ошибок ... – AVee

+0

Вам нужно определить, что вы подразумеваете под * "reliabilty" *. Во-первых, возникает вопрос о целостности сообщения: является ли полученное сообщение тем же, что и при отправке ?. Тогда возникает вопрос, были ли все отправленные сообщения получены? Получены ли сообщения в правильном порядке? Требуется ли проверка подлинности (например, вас беспокоят атаки «человек в середине»)? Эти проблемы не все решаются каждым «надежным» протоколом. – sawdust

ответ

-1

Я всегда добавляю CRC для каждого сообщения, но мои протоколы более высокого уровня являются самосинхронизирующимися и терпимыми к потерям в силу незапрашиваемых отчетов о состоянии - если команда потеряна и состояние не изменяется, это становится очевидным в следующем отчете о состоянии. В зависимости от того, требуется ли ваше обнаружение или исправление ошибок, и можете ли вы переносить дополнительные задержки для повторных передач, вам может потребоваться изучить код с исправлением ошибок.

Понятия, представляющие интерес, включают в себя порядковые номера сообщений, подтверждение, возврат-N против выборочной повторной передачи и минимальное расстояние между кодами (расстояние Хэмминга).

Я определенно предлагаю вам взглянуть на дизайн TCP. Основы действительно очень минимальны для гарантированной доставки в порядке.

+0

@sawdust: Ах, простите об этом. Я думал, что изменения были в системе некоторое время, прежде чем вы прокомментировали. Во всяком случае, я согласен с тем, что было необходимо дополнительное объяснение. Тем не менее, я уверен, что строка «В зависимости от того, требуется ли ваше обнаружение или исправление ошибок, и можете ли вы терпеть дополнительные задержки для повторных передач, вам может потребоваться изучить код с исправлением ошибок». был в самой первой версии. –