2012-05-02 4 views
8

Я пытаюсь согласовать соединение telnet с сокетом. розетка работает, но сервер говорит мне, что вещь:Ответ команды Telnet IAC

ÿýÿýÿûÿû 

login: 

ÿýÿýÿûÿû означает 255 253 1 255 253 31 255 251 1 255 251 3

Я прочитал все документы RFC но я не «Не понимаю, на что я должен ответить, чтобы отправлять на сервер (строковые данные ascii?), мое желание - успешно запустить приглашение для входа, а затем отправить команды на сервер, например« halt »или что-то еще.

Заранее благодарим за ваш ответ.

+0

Обычный клиент telnet (из командной строки) отключает IAC/согласование, если он не подключается к внешнему порту telnet. Коды IAC легко анализируются: IIRC есть двухбайтовые и трехбайтовые последовательности, в большинстве случаев вы можете игнорировать все, кроме переключателя включения/выключения эха. Посмотрите это в RFC. – wildplasser

+0

BTW: коды в сообщении выглядят поврежденными. 255 + 253 являются частью трехбайтовой последовательности (IAC + DO + option_number) Второй байт {251,252,253,254} -> ожидает третьего байта. – wildplasser

+0

Я отредактировал мой пост! –

ответ

22

От RFC 854:

С NVT является то, что остается, когда никакие опции не включены, DO NOT и НЕ ответы гарантированно оставить соединение в состоянии , оба конца может справиться. Таким образом, все хосты могут реализовать свои TELNET-процессы, чтобы полностью не знать о вариантах, которые не поддерживаются , просто возвращая отклонение (то есть отказ) любого запроса опции , который не может быть понят.

То есть, для каждого WILL, ответить DONT. За каждые DO ответьте WONT.

В вашем случае, вы получили (см IANA assigned telnet options):

255 253 1 IAC DO ECHO 
255 253 31 IAC DO NAWS 
255 251 1 IAC WILL ECHO 
255 251 3 IAC WILL SUPPRESS-GO-AHEAD 

Таким образом, вы должны ответить:

255 252 1 IAC WONT ECHO 
255 252 31 IAC WONT NAWS 
255 254 1 IAC DONT ECHO 
255 254 3 IAC DONT SUPPRESS-GO-AHEAD 

Обратите внимание, что вы не должны знать, что 1, 3, или 31 фактически означает. Это красота. Вы можете отказаться от этих опций, даже не зная их определения. Вы просто по умолчанию используете сетевой виртуальный терминал.

+0

Это работает! Большое спасибо за ваш свет :) –

1

Глядя его в RFC 854

255 253 1 IAC DO #1 
255 253 31 IAC DO #31 
255 251 1 IAC WILL #1 
255 251 3 IAC WILL #3 

Теперь отрываясь значения параметров в here: 1: = эхо, 31: = размер окна.

Смежные вопросы