2012-08-23 5 views
4

Arduino에 약간의 텔넷 클라이언트를 쓰고 있습니다. 다음 코드를 사용하여 텔넷 클라이언트 linemode를 비활성화 한 후에 텔넷 클라이언트 linemode를 어떻게 다시 활성화합니까?텔넷 서버 가능 클라이언트 linemode

client.write(255); // IAC 
    client.write(251); // WILL 
    client.write(1); // ECHO 

    client.write(255); // IAC 
    client.write(251); // WILL 
    client.write(3); // suppress go ahead 

    client.write(255); // IAC 
    client.write(252); // WONT 
    client.write(34); // LINEMODE 

(암호 입력 용)

역 명령을 시도했지만 작동하지 않습니다. 다음 명령을 사용하는 BSD 텔넷 클라이언트를 사용하여

+0

내가 시도 할 첫 번째 일은 arduino를 제거하는 것입니다. 이러한 명령을 텔넷 응용 프로그램에서 텔넷 서버로 직접 보내고 응답을 확인합니다. – cstrutton

+0

IAC WILL LINEMODE를 시도 했습니까? – EJP

답변

1

:

다음
set debug 
set prettydump 
set options 
set netdata 

, 문자-at-a-time 모드와 모드 명령을 사용하여 전환 할 수 있습니다 라인에서-A-시간,

mode line 
mode character 

다음 협상을 검사하고 복제 할 수 있습니다.

그러나 IAC DONT ECHO, 암호, CR NUL, IAC DO ECHO 만 보내면 충분합니다. "WILL ECHO, WILL SGA"를 사용하여 "한 번에 문자"모드를 입력하는 것을 "kludge 모드"라고합니다 - ECHO를 다시 활성화하면 표준 NVT 동작 (linemode)이 기본 설정됩니다.

그러나 전체 확장 된 linemode를 지원하는 bsd 클라이언트. 코드베이스 (forwardmask, slc, callbacks 등)의 거의 50 %는 사소하지 않습니다.

서버가 WONT LINEMODE에 응답하면 실제로는 여전히 기본 NVT linemode에 있습니다. 확장 된 linemode에 없거나 협상을 신경 쓰지 않습니다. 그렇다면 DO LINEMODE를 보내는 것은 실제로 끔찍한 생각입니다. 왜냐하면 나중에 rfc의 linemode에 대한 서브 협상 프로토콜을 인정해야 할 필요가 있기 때문입니다.

DO LINEMODE를 회신하는 서버는 IAC SB LINEMODE MODE < 1 바이트 비트 마스크> 및 IAC SB LINEMODE FORWARDMASK와 같은 라인 모드 서브 협상을 계속 요청할 것입니다. WONT FORWARDMASK로이 응답을 거절하십시오. MODE는 ACK 비트가 설정되어 있어야하며, 마찬가지로 응답해야합니다.