LINUX.ORG.RU

Telnet options, CRLF


0

0

Поднимаю сокет, коннекчусь на него телнетом

печатаю клиенту данные, но клиент не воспринимает LF как CRLF, и каретку не возвращает, а только переводит на новую строку. какой параметр устанавливает эту опцию,чтобы клиент вопсринимад LF как CRLF

можно ли указать клиенту принудительно какой тип терминала нужно использовать?

anonymous

Да там сбоку есть длинный металлический рычаг. Как только телнет сделает "дзинь" толкаешь рычаг справа налево и c треском возвращаешь каретку...

А если серъезно то LF это LF (0x10) CRLF это СR(0x13) и LF(0x10) (два разных байта). И чтобы заставить телнет воспринимать LF как CRLF, надоть как минимум при установке соединения при передаче параметров терминала так и сказать "у меня перенос LF" как точно уже не помню кури самую первую rfcшку там все в самом начале жуется.

iBliss
()
Ответ на: комментарий от iBliss

то что LF и CR - разные байты мне известно, не первый день живу. И то что надо дать команду клиенту я тоже в курсе. И то что искать надо в RFC мне тоже известно.

знал бы в какой RFC искать - не спрашивал бы

не знаешь что ответить - лучше не отвечай

еще раз повторю вопрос, какой командой указать клиенту, чтобы одиночный LF он воспринимал как последовательность CRLF?

anonymous
()
Ответ на: комментарий от anonymous

> знал бы в какой RFC искать - не спрашивал бы

А вот тут спросить не судьба http://www.rfc-editor.org/cgi-bin/rfcsearch.pl ?

The sequence "CR LF", as defined, will cause the NVT to be positioned at the left margin of the next print line (as would, for example, the sequence "LF CR"). However, many systems and terminals do not treat CR and LF independently, and will have to go to some effort to simulate their effect. (For example, some terminals do not have a CR independent of the LF, but on such terminals it may be possible to simulate a CR by backspacing.) Therefore, the sequence "CR LF" must be treated as a single "new line" character and used whenever their combined action is intended; the sequence "CR NUL" must be used where a carriage return alone is actually desired; and the CR character must be avoided in other contexts. This rule gives assurance to systems which must decide whether to perform a "new line" function or a multiple-backspace that the TELNET stream contains a character following a CR that will allow a rational decision.

Бл# мне было бы стыдно....

iBliss
()
Ответ на: комментарий от iBliss

от мля...

да я в курсе где RFC читать и как искать

и в данном документе описаны всего лишь правила

короче, вот такая бодяга, висит демон (A) с поднятым сокетом, клиент (B) цепляется телнетом на открытй порт и дает команду, демон (А) принимает команду, соединяется с другим сервером (C), берет от туда данные и выдает подключенному клиенту.

так вот мой демон выдает данные так, как он их получает, то есть as is, но клиент при выводе полученных данных на терминал не воспринимает LF как последовательность CR-LF и вывод получается кривой.

со своей стороны я не имею права изменять полученные данные, то есть делать замену LF на CRLF, так как я должен отдать их с точностью до байта такими, как получил.

если сделать продключение A->C, то есть напрямую, то клиент почему-то воспринимает LF как CRLF, а если через мой поднятый сокет на демоне, то не хочет.
===============================================
bash-2.05$ telnet
telnet> toggle options
Will show option processing.
telnet> open 0 7000
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
RCVD WILL BINARY
SENT DO BINARY
RCVD WILL ECHO
SENT DO ECHO
RCVD WILL SUPPRESS GO AHEAD
SENT DO SUPPRESS GO AHEAD
1
2
3
Welcome to Multi Activation 3.2
<
================================

anonymous
()
Ответ на: комментарий от anonymous

===============================================
bash-2.05$ telnet
telnet> toggle options
Will show option processing.
telnet> open 0 7000
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
RCVD WILL BINARY
SENT DO BINARY
RCVD WILL ECHO
SENT DO ECHO
RCVD WILL SUPPRESS GO AHEAD
SENT DO SUPPRESS GO AHEAD
1
2
3
Welcome to Multi Activation 3.2
<
================================

anonymous
()
Ответ на: комментарий от anonymous

Ладно не кипятись... Ты бы сразу сказал что такие вилы... что данные оттранслировать нельзя

Вот тут глянь, http://mars.netanya.ac.il/~unesco/cdrom/booklet/HTML/NETWORKING/node300.html

Мурзилка старовата, но более удобочитаема...

Linemode кажись...

Еще можно binary mode http://www.rfc-editor.org/rfc/rfc856.txt

iBliss
()
Ответ на: комментарий от anonymous

Точно в вышеупомянутой мурзилке LINEMODE переключает режим в старый телетайпный вариант когда телнет работал на таких здоровых пишущих машинках с моторчегом ;). Каретка при скидывании сторки возвратщалась на исходную сама. Правда если клиент скажет "WON'T LINEMODE". Хз...

iBliss
()
Ответ на: комментарий от iBliss

telnet> open 0 7000
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
RCVD DO LINEMODE
SENT DO SUPPRESS GO AHEAD
SENT WILL LINEMODE
SENT IAC SB LINEMODE SLC SYNCH NOSUPPORT 0; IP VARIABLE|FLUSHIN|FLUSHOUT 3; AO VARIABLE 15; AYT NOSUPPORT 0; ABORT VARIABLE|FLUSHIN|FLUSHOUT 28; EOF VARIABLE 4; SUSP VARIABLE|FLUSHIN 26; EC VARIABLE 127; EL VARIABLE 21; EW VARIABLE 23; RP VARIABLE 18; LNEXT VARIABLE 22; XON VARIABLE 17; XOFF VARIABLE 19; FORW1 NOSUPPORT 0; FORW2 NOSUPPORT 0;
RCVD DO BINARY
SENT WILL BINARY
RCVD WILL ECHO
SENT DO ECHO
RCVD WILL SUPPRESS GO AHEAD
1
_2
__3
___Welcome to Multi Activation 3.2
<


таже самая фигня...

anonymous
()
Ответ на: комментарий от iBliss

Все пора завязывать с трепотней в толксах иначе придется заново учится держать ложку и вилку...

iBliss
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.