Telnet 라인 종료 문제: 명령을 보낼 때 CRLF에서 LF를 제거할 수 없습니다.

Telnet 라인 종료 문제: 명령을 보낼 때 CRLF에서 LF를 제거할 수 없습니다.

\r토글을 로 설정했음에도 불구하고(아래 예 참조) 텔넷이 명령 끝에 CR( )만 보내도록 할 수는 없습니다 . 이와 대조적으로 Telnet은 항상 CR-LF( )를 보냅니다.crlf<CR><NUL>\r\n

내 목표: RS-232 포트를 통해 셀룰러 모뎀에 연결된 원격 장치에서 데이터를 검색하는 것입니다. 현재 저는 Telnet을 사용하여 데이터 요청을 보내고 있습니다. 저는 이것이 가능하다고 믿을 충분한 이유가 있으며 이를 확장하고 자동화할 수 있어야 합니다.

요구 사항: 원격 장치에는 CR로만 끝나는 명령이 필요합니다.

문제에 대한 나의 이해: 추가 LF로 인해 장치가 내 명령을 올바르게 읽지 못하는 것 같습니다. 좀 더 구체적으로 말하면 LF는 각 명령에서 남겨두고 다음 명령의 시작 부분에 추가된다고 생각합니다. 장치를 재설정한 후 처음으로 원격 장치에 명령을 실행했을 때 실제로 올바른 응답을 받았기 때문에 이것을 추론했습니다. 그러나 모든 후속 응답은 장치가 명령을 이해하지 못한다는 것을 나타냅니다.

세부사항: Telnet을 시작하고 16진수 값을 반환하도록 설정하면( 읽기 쉽도록 set netdata더하기 기호 set prettydump) CR (hex=0d) 및 LF (hex=0a) 로 끝나는 줄을 볼 수 있으며 심지어 Telnet에 요청하는 경우도 있습니다. CR과 NULL로만 줄을 끝냅니다. 즉, 마지막 문자는 0a가 아니라 00이 될 것으로 예상합니다. 아래 코드 조각을 참조하세요(호스트와 포트를 "x"로 교체). 참고: "QD"는 장치에 현재 날짜를 보고하도록 요청하는 명령이고, "BADD"는 명령을 이해하지 못할 때 장치의 응답입니다.

$ telnet
telnet> toggle crlf
Will send carriage returns as telnet <CR><LF>.
telnet> toggle crlf
Will send carriage returns as telnet <CR><NUL>.
telnet> set netdata
Will print hexadecimal representation of network traffic.
telnet> set prettydump
Will print user readable output for "netdata".
telnet> open x.x.x.x xxxx
Trying x.x.x.x xxxx...
Connected to x.x.x.x.
Escape character is '^]'.
QD
> 0x0    51 44 0d 0a
< 0x0    42 41 44 44 0d 0a
BADD

테스트한 플랫폼: Telnet, inetutils-telnet 및 PuTTY를 사용하는 Ubuntu 18.04.1, Cygwin, PuTTY 및 TeraTerm을 사용하는 Windows 10;

비슷한 게시물:Telnet에서 "\n"만 보내는 방법이 있습니까?- 그러나 다른 게시물의 문제는 정반대입니다. 줄 끝은 LF만 있으면 됩니다.

문제 요약: Telnet이 라인 끝에서만 CR을 보내도록 하려면 어떻게 해야 합니까?

관련 정보