
\n
telnetで ではなくのみを送信するようにする方法があるかどうか知りたいです\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 クライアントでこれを試したので、切り替えが何をするべきかを誤解しているのではないかと思います。
\n
Enter キーなどを使用して、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。