Telnet で「\n」だけを送信する方法はありますか?

Telnet で「\n」だけを送信する方法はありますか?

\ntelnetで ではなくのみを送信するようにする方法があるかどうか知りたいです\r\n

たとえば、1 つのプロセスが次のようにポートをリッスンしている場合、受信したトラフィックのバイトを出力するには、次のようにします。

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 は改行文字として 0x0a ではなく 0x0d0a を送信しています。これは LF ではなく CRLF であると理解しています。^Mまたは を使用した場合も CRLF が送信されます^J

を使用することで、この問題に直接対処する解決策を見つけたと思いましたがtoggle crlf、このオプションを設定しても、Telnet は常に を送信します\r\n。また、さまざまな Telnet クライアントでこれを試したので、切り替えが何をするべきかを誤解しているのではないかと思います。

\nEnter キーなどを使用して、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では、行末として復帰改行を指定しているためです。RFC 5198 の付録 C

関連情報