Existe alguma maneira de enviar apenas "\n" no Telnet?

Existe alguma maneira de enviar apenas "\n" no Telnet?

Estou me perguntando se existe alguma maneira de fazer com que o telnet envie apenas um \n, não um \r\n.

Por exemplo, se um processo estiver escutando em uma porta como esta, para imprimir os bytes de qualquer tráfego recebido:

nc -l 1234 |  xxd -c 1 

Conectando-se a ele pelo netcat com nc localhost 1234e digitando "hi[enter]":

0000000: 68  h
0000001: 69  i
0000002: 0a  .

Conectando-se a ele via telnet com telnet localhost 1234e digitando "hi[enter]"

0000000: 68  h
0000001: 69  i
0000002: 0d  .
0000003: 0a  .

O Telnet está enviando 0x0d0a em vez de 0x0a para a nova linha. Eu entendo que este é um CRLF em oposição ao LF. Ele também envia o CRLF se eu usar ^Mou ^J.

Achei que tinha encontrado uma solução que resolvesse diretamente esse problema, usando toggle crlf, mas mesmo com essa opção definida, o Telnet está sempre enviando o \r\n. Também tentei isso em vários clientes de telnet, então acho que não entendi o que a alternância deve fazer.

Tem como enviar apenas um \ntelnet, com enter ou não?

Responder1

Você pode negociarmodo binário. Uma vez neste modo você não pode sair dele. Negociação significa que o telnetcliente enviará uma sequência de bytes especial ao servidor, que você deverá ignorar se não estiver implementando o protocolo.

Os dados subsequentes são enviados inalterados, em modo linha. Cliente:

$ telnet localhost 1234
Connected to localhost.
Escape character is '^]'.
^]
telnet> set binary
Negotiating binary mode with remote host.
hi
  ^]
telnet> quit

e servidor

$ nc -l 1234 |  xxd -c 1 
00000000: ff  .
00000001: fd  .
00000002: 00  .
00000003: ff  .
00000004: fb  .
00000005: 00  .
00000006: 68  h
00000007: 69  i
00000008: 0a  .

Seu telnetcliente pode ter a opção de iniciar no modo binário ou você pode colocar uma entrada em~/.telnetrc

localhost
 set binary

Você pode aplicar o modo binário independentemente em cada direção, então você pode preferir set outbinary.

Responder2

Não emtelnet, uma vez que o RFC aplicável especifica retorno de carro/alimentação de linha como final de linha. VerApêndice C na RFC 5198.

informação relacionada