Gibt es eine Möglichkeit, in Telnet nur "\n" zu senden?

Gibt es eine Möglichkeit, in Telnet nur "\n" zu senden?

Ich frage mich, ob es eine Möglichkeit gibt, Telnet dazu zu bringen, nur ein \nund kein zu senden \r\n.

Wenn beispielsweise ein Prozess auf einem Port wie diesem lauscht, können Sie die Bytes des empfangenen Datenverkehrs wie folgt ausdrucken:

nc -l 1234 |  xxd -c 1 

Stellen Sie über Netcat eine Verbindung dazu her nc localhost 1234und geben Sie „hi[enter]“ ein:

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

Stellen Sie über Telnet eine Verbindung dazu her telnet localhost 1234und geben Sie „hi[enter]“ ein.

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

Telnet sendet für die neue Zeile 0x0d0a statt 0x0a. Ich verstehe, dass dies ein CRLF und kein LF ist. Es sendet auch das CRLF, wenn ich ^Moder verwende ^J.

Ich dachte, ich hätte eine Lösung gefunden, die dieses Problem direkt behebt, indem ich verwende toggle crlf, aber selbst mit dieser Option sendet Telnet immer die \r\n. Ich habe dies auch auf verschiedenen Telnet-Clients versucht, daher nehme ich an, dass ich den Zweck des Umschaltens falsch verstehe.

Gibt es eine Möglichkeit, einfach \nüber Telnet zu senden, mit der Eingabetaste oder auf andere Weise?

Antwort1

Sie können verhandelnBinärmodus. Sobald Sie sich in diesem Modus befinden, können Sie ihn nicht mehr verlassen. Verhandlung bedeutet, dass der telnetClient eine spezielle Bytefolge an den Server sendet, die Sie ignorieren müssen, wenn Sie das Protokoll nicht implementieren.

Nachfolgende Daten werden unverändert im Zeilenmodus gesendet. Client:

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

und Server

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

Ihr telnetClient hat möglicherweise die Option, im Binärmodus zu starten, oder Sie können einen Eintrag in~/.telnetrc

localhost
 set binary

Sie können den Binärmodus unabhängig in jede Richtung anwenden, daher bevorzugen Sie möglicherweise set outbinary.

Antwort2

Nicht inTelnet, da der anwendbare RFC als Zeilenende einen Wagenrücklauf/Zeilenvorschub angibt. SieheAnhang C in RFC 5198.

verwandte Informationen