Перейти к содержанию
    

Modbus TCP Server: как правильно выделять запросы из потока?

Здравствуйте!

 

В соответствии с "MODBUS Messaging on TCP/IP Implementation Guide V1.0b" пытаюсь реализовать сервер (как там рекомендуют- с помощью BSD Sockets). Не совсем понимаю, как сервер должен выделять отдельные запросы из потока входных данных?

 

Предположим, клиент отправил подряд три запроса (три вызова send()). Сервер одним вызовом recv() считал всё в буфер. Как выделять отдельные запросы? Ориентироваться только на поле Length в MBAP? Но как поступить, если клиент прислал запрос несоответствующей длины (допустим, первый из трёх)? Тогда на начало следующего (второго) запроса мы уже не попадём и вместо его MBAP прочитаем ерунду. В упомянутом выше документе сказано, что если MBAP некорректный, то принятые данные следует игнорировать. Получится, что два оставшихся запроса будут проигнорированы сервером. Что-то мне кажется, что так быть не должно.

 

Хотелось бы узнать, решал ли кто-то подобную задачу и каким способом?

Заранее благодарю за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...