CR versus LF: qual devo reconhecer como “fim de linha” no programa terminal? [fechadas]

0

Eu entendo o uso de alimentação de linha e / ou retorno de carro como separadores de linha no Windows, Macintosh e Linux. Mas agora estou escrevendo um programa que aceita entrada de usuário de texto sobre um soquete TCP e preciso saber o que devo reconhecer como um marcador de "fim de linha" ao analisar texto digitado.

Eu só vi um feed de linha enviado quando um usuário digita RETURN em um terminal conectado. Os retornos das carruagens serão enviados? Em caso afirmativo, eles sempre farão parte de um par de CRLF, ou um determinado programa de terminal pode enviar um CR solitário para indicar "o usuário pressionou RETURN"?

    
por Daniel Griscom 29.06.2015 / 14:32

1 resposta

2

Se eu fosse você, usaria os mesmos padrões que outros protocolos comuns da Internet que usam o TCP. Estou mais familiarizado com HTTP e SMTP, os quais usam um par de retorno de carro / linha de alimentação:

HTTP

De acordo com a RFC do Protocolo de Transferência de Hipertexto - HTTP / 1.1

HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all protocol elements except the entity-body

SMTP

No RFC original para o Simple Mail Transfer Protocol , um line é definido como

a sequence of ASCII characters ending with a <CRLF>.

Newline

O artigo da Newline Wikipedia também tem o seguinte para dizer:

Most textual Internet protocols (including HTTP, SMTP, FTP, IRC and many others) mandate the use of ASCII CR+LF ('\r\n', 0x0D 0x0A) on the protocol level, but recommend that tolerant applications recognize lone LF ('\n', 0x0A) as well.

    
por 29.06.2015 / 15:39