TCP
Имейте в виду, что TCP является потоковым соединением. Вы можете или не можете получить полную команду в одном сообщении. Вы можете даже получить несколько команд за одно чтение.
Чтобы решить эту проблему, сообщения TCP обычно имеют уникальную последовательность старта и остановки или байт, который может не быть частью сообщения.
(SomeCommand)
Где (
- начало, а )
- символ остановки.
Альтернативный способ добавления заголовка к фактическому сообщению, которое содержит длину сообщения.
11 S O M E M E S S A G E
Где 11 - длина сообщения, а somemessage
- фактическое сообщение. Обычно вы передаёте длину в байтах или коротких словах, а не в строковом литерале.
В обоих случаях вы должны читать снова и снова, пока не получите одно полное сообщение, а затем отправить его в приложение.
Также TCP основан на соединении. Вы должны подключиться к удаленному сайту. Преимущество состоит в том, что TCP гарантирует, что все сообщения отправляются в том порядке, в котором вы их поместили. TCP также автоматически повторно отправит потерянные пакеты, и вам не нужно об этом беспокоиться.
UDP
В отличие от этого, UDP основан на сообщениях / пакетах, но он ненадежен. Вы можете получить или не получить сообщение, и в некоторых случаях вам придется отправлять его повторно. Также UDP не имеет понятия «сессия». Вы должны будете сделать это самостоятельно, если потребуется.
Ответ на ваш вопрос зависит от используемого протокола. Для TCP это не будет хорошо работать с вашим текущим форматом сообщения. Возможно, вам придется добавить заголовок.
Вы можете использовать UDP, но тогда вам, возможно, придется обнаруживать и повторно отправлять потерянные сообщения.