Я понимаю использование перевода строки и / или возврата каретки в качестве разделителей строк в Windows, Macintosh и Linux. Но сейчас я пишу программу, которая будет принимать ввод текста пользователем через сокет TCP, и мне нужно знать, что я должен распознавать как маркер "конца строки" при разборе напечатанного текста.

Я видел только перевод строки, когда пользователь вводит RETURN на подключенном терминале. Будут ли отправлены возвраты каретки? Если это так, будут ли они всегда частью пары CRLF, или может определенная терминальная программа отправит одиночный CR, чтобы указать "пользователь только что нажал RETURN"?

1 ответ1

2

На вашем месте я бы использовал те же стандарты, что и другие распространенные интернет-протоколы, использующие TCP. Я наиболее знаком с HTTP и SMTP, оба из которых используют пару возврат каретки / перевод строки:

HTTP

Согласно RFC для протокола передачи гипертекста - HTTP/1.1

HTTP/1.1 определяет последовательность CR LF как маркер конца строки для всех элементов протокола, кроме тела объекта

SMTP

В исходном RFC для простого протокола пересылки почты line определяется как

последовательность символов ASCII, оканчивающаяся на <CRLF> .

Новая линия

В статье Newline Wikipedia также есть следующее:

Большинство текстовых интернет-протоколов (включая HTTP, SMTP, FTP, IRC и многие другие) требуют использования ASCII CR+LF ('\r\n', 0x0D 0x0A) на уровне протокола, но рекомендуют толерантным приложениям распознавать одиночный LF ('\n', 0x0A).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .