Создал Telnet клиент: один поток на выдачу команд другой на прием. Отсылаю команду, сервак отвечает: имя команды и тот ответ, который идет по логике. Ну например:
ввожу: help
отвечает: help и далее список доступных команд
Все хорошо, но ответ повторения моей команды (тут — help) идет в закодированном виде:
каждый символ представлен в виде
1b 37 симол_который_я_передал 1b 38 1b 5b 31 43
то есть вместо одного симола принимаю я 9 символов, вместо ответа help ко мне приходит тарабарщина из 36 символов.
Что это за символы и как их убрать (кроме как парсить ответ сервака) ?
Здравствуйте, Timurka, Вы писали:
T>Создал Telnet клиент: один поток на выдачу команд другой на прием. Отсылаю команду, сервак отвечает: имя команды и тот ответ, который идет по логике. Ну например: T>ввожу: help T>отвечает: help и далее список доступных команд T>Все хорошо, но ответ повторения моей команды (тут — help) идет в закодированном виде: T>каждый символ представлен в виде T>1b 37 симол_который_я_передал 1b 38 1b 5b 31 43 T>то есть вместо одного симола принимаю я 9 символов, вместо ответа help ко мне приходит тарабарщина из 36 символов. T>Что это за символы и как их убрать (кроме как парсить ответ сервака) ?
Здравствуйте, Timurka, Вы писали:
A>>читать RFC ftp://ftp.isi.edu/in-notes/rfc854.txt. Telnet это не просто плюнул/ответил, A>>а навороченный протокол
T>Читал-читал — может чего конкретного подскажешь
Плохо читал . Вот конкретно, чтоб сервер не отсылал эхо
1. Command Name and Code
ECHO 1
2. Command Meanings
IAC WILL ECHO
The sender of this command REQUESTS to begin, or confirms that it
will now begin, echoing data characters it receives over the
TELNET connection back to the sender of the data characters.
IAC WON'T ECHO
The sender of this command DEMANDS to stop, or refuses to start,
echoing the data characters it receives over the TELNET connection
back to the sender of the data characters.
IAC DO ECHO
The sender of this command REQUESTS that the receiver of this
command begin echoing, or confirms that the receiver of this
command is expected to echo, data characters it receives over the
TELNET connection back to the sender.
IAC DON'T ECHO
The sender of this command DEMANDS the receiver of this command
stop, or not start, echoing data characters it receives over the
TELNET connection.
3. Default
WON'T ECHO
DON'T ECHO
No echoing is done over the TELNET connection.
Вот по коммандам:
NAME CODE MEANING
SE 240 End of subnegotiation parameters.
NOP 241 No operation.
Data Mark 242 The data stream portion of a Synch.
This should always be accompanied
by a TCP Urgent notification.
Break 243 NVT character BRK.
Interrupt Process 244 The function IP.
Abort output 245 The function AO.
Are You There 246 The function AYT.
Erase character 247 The function EC.
Erase Line 248 The function EL.
Go ahead 249 The GA signal.
SB 250 Indicates that what follows is
subnegotiation of the indicated
option.
WILL (option code) 251 Indicates the desire to begin
performing, or confirmation that
you are now performing, the
indicated option.
WON'T (option code) 252 Indicates the refusal to perform,
or continue performing, the
indicated option.
DO (option code) 253 Indicates the request that the
other party perform, or
confirmation that you are expecting
the other party to perform, the
indicated option.
DON'T (option code) 254 Indicates the demand that the
other party stop performing,
or confirmation that you are no
longer expecting the other party
to perform, the indicated option.
IAC 255 Data Byte 255.
Блин... форматирование слетело... вот так должно было быть:
NAME CODE MEANING
SE 240 End of subnegotiation parameters.
NOP 241 No operation.
Data Mark 242 The data stream portion of a Synch.
This should always be accompanied
by a TCP Urgent notification.
Break 243 NVT character BRK.
Interrupt Process 244 The function IP.
Abort output 245 The function AO.
Are You There 246 The function AYT.
Erase character 247 The function EC.
Erase Line 248 The function EL.
Go ahead 249 The GA signal.
SB 250 Indicates that what follows is
subnegotiation of the indicated
option.
WILL (option code) 251 Indicates the desire to begin
performing, or confirmation that
you are now performing, the
indicated option.
WON'T (option code) 252 Indicates the refusal to perform,
or continue performing, the
indicated option.
DO (option code) 253 Indicates the request that the
other party perform, or
confirmation that you are expecting
the other party to perform, the
indicated option.
DON'T (option code) 254 Indicates the demand that the
other party stop performing,
or confirmation that you are no
longer expecting the other party
to perform, the indicated option.
IAC 255 Data Byte 255.
Слушай, эхо тут не причем
эти символы возвращаются в ЛЮБОМ случае
скажу более — это даже не суть важно — мне нужно чтоб был ответ сервака на мои команды, меня не устраивает в какой форме возвращается инфа. Откуда берутся эти символы?
Более подробно о подключении — я коннектюсь к девайсу при помощи Telnet этот девайс взаимодействует с другим девайсом по rs232. И вот в этой связке мне кто то шлет эту комбинацию символов.
Разбирался с Reflection по этому поводу, там есть опция — display/interpret control characters. Если мы жмем display, то эти символы отображаются и в Reflection.
Здравствуйте, Timurka, Вы писали:
T>Слушай, эхо тут не причем T>эти символы возвращаются в ЛЮБОМ случае T>скажу более — это даже не суть важно — мне нужно чтоб был ответ сервака на мои команды, меня не устраивает в какой форме возвращается инфа. Откуда берутся эти символы? T>Более подробно о подключении — я коннектюсь к девайсу при помощи Telnet этот девайс взаимодействует с другим девайсом по rs232. И вот в этой связке мне кто то шлет эту комбинацию символов. T>Разбирался с Reflection по этому поводу, там есть опция — display/interpret control characters. Если мы жмем display, то эти символы отображаются и в Reflection.
хмм... похоже железка не совсем понимает телнет протокол... и на твои управляющие символы не реагирует... если не найдется какого-нить джампера/комманды, думаю придется научится их понимать
Здравствуйте, aka50, Вы писали:
A>Здравствуйте, Timurka, Вы писали:
T>>Разбирался с Reflection по этому поводу, там есть опция — display/interpret control characters. Если мы жмем display, то эти символы отображаются и в Reflection.
A>хмм... похоже железка не совсем понимает телнет протокол... и на твои управляющие символы не реагирует... если не найдется какого-нить джампера/комманды, думаю придется научится их понимать
А ты уверен что это Telnet, а не Terminal, железки обычно простой терминальный интерфейс реализовывают туда просто Telnet некуда всунуть да и незачем, модэмы например.
Здравствуйте, Stoune, Вы писали:
S>А ты уверен что это Telnet, а не Terminal, железки обычно простой терминальный интерфейс реализовывают туда просто Telnet некуда всунуть да и незачем, модэмы например.
Что значит "это Telnet, а не Terminal" — я не совсем понял что ты имеешь в виду.
Насчет того что это Telnet — уверен, Telnet-сервак делал наш программер.
По поводу схемы на которой это проявляется — я уже писал в предыдущем моем посте. Так вот при реализации альтернативной схемы — когда я коннектюсь к девайсу 2 по Telnet, минуя девайс 1 и RS232 — тогда все окей. Такое впечатление что виноват RS232.
Здравствуйте, Timurka, Вы писали:
T>Здравствуйте, Stoune, Вы писали:
S>>А ты уверен что это Telnet, а не Terminal, железки обычно простой терминальный интерфейс реализовывают туда просто Telnet некуда всунуть да и незачем, модэмы например.
T>Что значит "это Telnet, а не Terminal" — я не совсем понял что ты имеешь в виду. T>Насчет того что это Telnet — уверен, Telnet-сервак делал наш программер. T>По поводу схемы на которой это проявляется — я уже писал в предыдущем моем посте. Так вот при реализации альтернативной схемы — когда я коннектюсь к девайсу 2 по Telnet, минуя девайс 1 и RS232 — тогда все окей. Такое впечатление что виноват RS232.
Извини, сморозил глупость, я имел ввиду что я к железкам присоединиюсь через "Hyper Terminal", а не через telnet.exe. Нужно скорости правильно выставить, чётность, кстати "Hyper Terminal" что идёт в поставке с 2000/XP с некоторыми железками не работал, помогло копирование старой версии из 98.
Здравствуйте, aka50, Вы писали:
A>Здравствуйте, Timurka, Вы писали:
A>Плохо читал . Вот конкретно, чтоб сервер не отсылал эхо
Я пробовал соединяться с помощью telnet(telnet.exe) с telnet server'ом(tlntsvr.exe). И он (сервер) чтобы перевести курсор в левый верхний угол на клиенте шлет ему (клиенту) следующую последовательность
1B 5B 31 3B 31 48
Что-то я не уловлю связи со спецификацией...
И еще интересно как реализовать, чтобы сервер заставлял рисовать клиента звездочки при вводе пароля. И еще много хотелось бы узнать, такого чего нет в этой спецификации.
Re[5]: ответ Telnet сервера
От:
Аноним
Дата:
19.01.06 10:56
Оценка:
Здравствуйте, vadik_malyshev, Вы писали:
_>И еще интересно как реализовать, чтобы сервер заставлял рисовать клиента звездочки при вводе пароля.
звездочки это так:
отключаешь локальное эхо
включаешь удаленное эхо
удаленное эхо присылает звездочку вместо символа в случае если сейчас статус прима пароля
(обработчик команд в телнет-сервере)
Здравствуйте, vadik_malyshev, Вы писали:
_>Здравствуйте, aka50, Вы писали:
A>>Здравствуйте, Timurka, Вы писали:
A>>Плохо читал . Вот конкретно, чтоб сервер не отсылал эхо
_>Я пробовал соединяться с помощью telnet(telnet.exe) с telnet server'ом(tlntsvr.exe). И он (сервер) чтобы перевести курсор в левый верхний угол на клиенте шлет ему (клиенту) следующую последовательность
_>1B 5B 31 3B 31 48
_>Что-то я не уловлю связи со спецификацией...
Я разбирался с этим вопросом, вроде бы это управляющие команды для позиционирования курсора. Но где спецификация или какая либо инфа по данному вопросу я так и не узнал. Просмотрел поиском кучу RFC, ничего не нашел.
Здравствуйте, Timurka, Вы писали:
_>>1B 5B 31 3B 31 48
_>>Что-то я не уловлю связи со спецификацией...
T>Я разбирался с этим вопросом, вроде бы это управляющие команды для позиционирования курсора. Но где спецификация или какая либо инфа по данному вопросу я так и не узнал. Просмотрел поиском кучу RFC, ничего не нашел.
Это фича терминала, а не протокола. Смотреть в сторону terminal capability.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Здравствуйте, ДимДимыч, Вы писали:
ДД>Здравствуйте, Timurka, Вы писали:
_>>>1B 5B 31 3B 31 48
_>>>Что-то я не уловлю связи со спецификацией...
T>>Я разбирался с этим вопросом, вроде бы это управляющие команды для позиционирования курсора. Но где спецификация или какая либо инфа по данному вопросу я так и не узнал. Просмотрел поиском кучу RFC, ничего не нашел.
ДД>Это фича терминала, а не протокола. Смотреть в сторону terminal capability.
Здравствуйте, Timurka, Вы писали:
T>>>Я разбирался с этим вопросом, вроде бы это управляющие команды для позиционирования курсора. Но где спецификация или какая либо инфа по данному вопросу я так и не узнал. Просмотрел поиском кучу RFC, ничего не нашел.
ДД>>Это фича терминала, а не протокола. Смотреть в сторону terminal capability.
T>Где читать? В RFC нет этой информации.
Это уже у вашего программера спрашивайте, который Telnet-сервак писал. Для каждого терминала свои escape-последовательности.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)