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 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. 나는 또한 다양한 텔넷 클라이언트에서 이것을 시도했기 때문에 토글이 무엇을 해야 하는지 오해하고 있는 것 같습니다.

\nEnter 키나 다른 키를 사용하여 텔넷을 통해 보내는 방법이 있습니까 ?

답변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.

관련 정보