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は改行文字として0x0aの代わりに0x0d0aを送信します。 LFではなくCRLFであることがわかっています。 orを使用すると^MCRLFも送信されます^J

私はtelnetを使ってこの問題に対する解決策を直接見つけたと思いましたが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

おすすめ記事