¿Alguna forma de enviar sólo "\n" en Telnet?

¿Alguna forma de enviar sólo "\n" en Telnet?

Me pregunto si hay alguna forma de hacer que telnet envíe sólo un archivo \n, no un archivo \r\n.

Por ejemplo, si un proceso está escuchando en un puerto como este, para imprimir los bytes de cualquier tráfico recibido:

nc -l 1234 |  xxd -c 1 

Conectándose desde netcat con nc localhost 1234y escribiendo "hi[enter]":

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

Conectándose desde telnet con telnet localhost 1234y escribiendo "hola[enter]"

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

Telnet envía 0x0d0a en lugar de 0x0a para la nueva línea. Entiendo que se trata de un CRLF a diferencia de un LF. También envía el CRLF si uso ^Mo ^J.

Pensé que había encontrado una solución que aborda directamente este problema usando toggle crlf, pero incluso con esta opción configurada, Telnet siempre envía el archivo \r\n. También probé esto en varios clientes de telnet, así que supongo que no entiendo bien lo que se supone que debe hacer la alternancia.

¿Alguna forma de enviar simplemente un \ntelnet, con enter o de otra manera?

Respuesta1

puedes negociarmodo binario. Una vez en este modo no podrás salir de él. Negociación significa que el telnetcliente enviará una secuencia de bytes especial al servidor, que deberá ignorar si no está implementando el protocolo.

Los datos posteriores se envían sin cambios, en modo línea. Cliente:

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

y 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  .

Su telnetcliente puede tener una opción para comenzar en modo binario, o puede poner una entrada en~/.telnetrc

localhost
 set binary

Puedes aplicar el modo binario de forma independiente en cada dirección, por lo que quizás prefieras set outbinary.

Respuesta2

No enTelnet, ya que el RFC aplicable especifica retorno de carro/salto de línea como final de línea. VerApéndice C en RFC 5198.

información relacionada