Как получать TCP-пакеты без использования терминатора или сообщения фиксированной длины - PullRequest
0 голосов
/ 04 июня 2018

Я использую Spring Integration 2.0.3 с TCP.Поведение приложения заключается в том, что оно действует как TCP-клиент и отправляет сообщение стороннему инструменту с использованием TCP.Таким образом, приложение устанавливает соединение со сторонним инструментом, используя TCP, отправляет сообщение, ожидает ответа и, когда оно получено (снова действует как клиент), закрывает соединение.Теперь проблема заключается в том, что сторонний инструмент не может ни добавить терминатор, ни сделать сообщение фиксированной длины.

Насколько я понимаю, существует три способа сделать пакет и отправить его в приложение 1) Всегда отправлять фиксированный размерсообщения 2) Отправляйте размер сообщения с каждым сообщением 3) Используйте систему маркеров для разделения сообщений

Но я не могу использовать ни один из способов, упомянутых выше, я хочу знать, как мое приложение может получить ответное сообщение в этом сценарии,Возможно ли это?

1 Ответ

0 голосов
/ 04 июня 2018

Является ли ваша программа, чтобы закрыть соединение, как только вы получили сообщение?Или другая программа должна закрывать соединение после того, как отправила вам сообщение?

Если последнее, то это не проблема, поскольку вы просто читаете, пока соединение не будет закрыто.

Если первое, и вы не можете изменить протокол приложения, и он еще не указывает эти вещи (есть ли где-нибудь спецификация?), Тогда подождите с таймаутом.Если вы ничего не получили в течение X секунд, рассмотрите полученное сообщение полностью и закройте соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...