Есть ли способ отправить просто "\n" в Telnet?

Есть ли способ отправить просто "\n" в Telnet?

Мне интересно, есть ли способ заставить telnet отправлять только \n, а не \r\n.

Например, если один процесс прослушивает такой порт, чтобы вывести байты любого полученного трафика:

nc -l 1234 |  xxd -c 1 

Подключаемся к нему из netcat с помощью nc localhost 1234и набираем "hi[enter]":

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

Подключаемся к нему через telnet с помощью telnet localhost 1234и набираем "hi[enter]"

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

Telnet отправляет 0x0d0a вместо 0x0a для новой строки. Я понимаю, что это CRLF, а не LF. Он также отправляет CRLF, если я использую ^Mили ^J.

Я думал, что нашел решение, которое напрямую устраняет эту проблему, используя toggle crlf, но даже с этой установленной опцией Telnet всегда отправляет \r\n. Я также пробовал это на разных клиентах telnet, поэтому предполагаю, что я не понимаю, что должно делать переключение.

Есть ли способ отправить просто \nчерез telnet, с вводом или как-то иначе?

решение1

Вы можете вести переговорыдвоичный режим. Попав в этот режим, вы не сможете выйти из него. Согласование означает, что telnetклиент отправит серверу специальную последовательность байтов, которую вам придется игнорировать, если вы не реализуете протокол.

Последующие данные отправляются без изменений, в линейном режиме. Клиент:

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

и сервер

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

У вашего telnetклиента может быть возможность начать работу в двоичном режиме, или вы можете сделать запись в~/.telnetrc

localhost
 set binary

Вы можете применять двоичный режим независимо в каждом направлении, поэтому вы можете предпочесть set outbinary.

решение2

Не втелнет, поскольку соответствующий RFC определяет возврат каретки/перевод строки как окончание строки. См.Приложение C в RFC 5198.

Связанный контент