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は改行文字として0x0aの代わりに0x0d0aを送信します。 LFではなくCRLFであることがわかっています。 orを使用すると^M
CRLFも送信されます^J
。
私はtelnetを使ってこの問題に対する解決策を直接見つけたと思いましたが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。