Telnet에서 "\n"만 보내는 방법이 있습니까?

Telnet에서 "\n"만 보내는 방법이 있습니까?

텔넷 에서 \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.

답변2

여기가 아니야원격 로그인, 해당 RFC가 캐리지 리턴/줄 바꿈을 줄 종결자로 지정하기 때문입니다. 바라보다RFC 5198의 부록 C.

관련 정보