CR 与 LF:在终端程序中我应该将哪个识别为“行尾”?

CR 与 LF:在终端程序中我应该将哪个识别为“行尾”?

我理解在 Windows、Macintosh 和 Linux 中,换行符和/或回车符作为行分隔符的用法。但现在我正在编写一个通过 TCP 套接字接受用户文本输入的程序,我需要知道在解析输入的文本时应该将什么识别为“行尾”标记。

我只看到当用户在连接的终端上键入 RETURN 时发送换行符。是否会发送回车符?如果会,它们是否始终是 CRLF 对的一部分,或者某个终端程序是否会发送单独的 CR 来指示“用户刚刚按下了 RETURN”?

答案1

如果我是你,我会使用与其他使用 TCP 的常见 Internet 协议相同的标准。我最熟悉的是 HTTP 和 SMTP,它们都使用回车符/换行符对:

HTTP

根据 RFC超文本传输​​协议——HTTP/1.1

HTTP/1.1 将该序列定义CR LF为除实体主体之外的所有协议元素的行尾标记

邮件传输协议

在里面简单邮件传输协议的原始 RFCaline定义为

以 结尾的 ASCII 字符序列<CRLF>

新队

换行符维基百科条目还有这样的说法:

大多数文本互联网协议(包括 HTTP、SMTP、FTP、IRC 和许多其他协议)要求在协议级别使用 ASCII CR+LF('\r\n',0x0D 0x0A),但建议宽容应用程序也识别单独的 LF('\n',0x0A)。

相关内容