Как программист относится к завершению строк, когда речь идет об отправке строк через интерфейс связи, такой как IPC, Serial, Ethernet, …
Законно ли просто сохранять завершение строки и, следовательно, просто добавлять несколько строк в буфере полезной нагрузки?
Или есть s / t как правило, которое говорит, что вы не отправляете завершение строки через интерфейс связи?
Спасибо
Вы не отправляете «строки» по этим протоколам в форме, как вы можете подумать об этом. Вы отправляете необработанные байты в текстовом или двоичном виде. Думайте о них в терминах Qt как QByteArray или же QDataStream.
Вы найдете эти классы по всему QIODevice класс в рамках Qt, который является базовым классом для любого «IO». Затем этот базовый класс в QtCore повторно реализуется в подклассах, таких как в QtSerialPort, QtBluetooth, QtNetwork и подобных модулях.
В целом, ваш вопрос кажется немного более ориентированным на протокол, то есть на дизайн протокола. У вас обычно есть завершающий символ, если это текстовые данные, или вы могли бы вместо этого иметь поле длины. Завершающий символ также может быть любым в зависимости от данных, поэтому не только \0
,
Например, протоколы, которые мы используем, это иногда ‘\ n’, иногда ‘;’ и что «нет. Это зависит от вас, но использование выделенного завершающего символа вполне допустимо и широко используется на самом деле.
Естественно, только поле длины может быть применено при отправке в двоичном режиме.
Связь через любой интерфейс ДОЛЖНА происходить в соответствии с определенным протоколом. Если существуют правила завершения строки, это будет определено протоколом. Если вы не общаетесь по существующему протоколу, вам нужно определить протокол (то есть пользовательский протокол). Здесь вы определите, как и если вы прервете свои строки.