Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
VotVopros Гость
|
Добавлено: Пт Янв 23 2004 10:42 Заголовок сообщения: Проблема:vt100 + telnet |
|
|
Здравствуйте!
Помогите, если возможно!
Уже и по Google рыскал, и на rsdn выпрашивал... Но решения не нашёл.
КОНФИГУРАЦИЯ:
1) windows2k-telnet-server + windows2k telnet client (или HyperTerm), применённый к 127.0.0.1, настроенный на эмуляцию терминала vt100.
2) Запускаю ч/з telnet свою прогу, которая должна выводить на экран псевдографику и текст.
ПРОБЛЕМА:
Некоторые из символов выводятся не в своих позициях. При запуске проги под unix (безо всяких telnet) проблема не возникает.
ОБНАРУЖИЛ,
(с помощью capture) что при попадании на клиент, в посылаемые прогой esc-последовательности добавляются "лишние" esc-последовательности (позиционирование курсора). На каком уровне и почему они добавляются - не ясно. Добавляются они тем активней, чем больше объём посылаемых прогой данных. Под словом "посылаемый" я понимаю посылку в stdout....
ПРИМЕР:
При запуске без telnet (просто запускаю в сеансе ms-dos) на экран посылаются такие данные:<esc [ 6 ; 3 H - - - - - >
При использовании capture на клиенте принимается:<esc [ 6 ; 3 H - - esc [ 6 ; 1 H - - - >
Пробовал менять настройки на клиенте - ничего не помогает.
Может быть и на telnet сервере нужно как-то эмулировать vt100? Но зачем и как? Сервер шлёт себе и шлёт - какая разница что...
Управляющих кодов telnet ( 255 ...) программа вроде не шлёт...
Что делать? Помогите! |
|
Вернуться к началу |
|
|
VotVopros Гость
|
Добавлено: Пт Янв 23 2004 11:17 Заголовок сообщения: |
|
|
Если даже нечего ответить на мой вопрост, подскажите пожалуйста форум, кроме rsdn и citforum, на котором мне могут помочь с решением проблемы... |
|
Вернуться к началу |
|
|
VotVopros Гость
|
Добавлено: Пт Янв 23 2004 18:18 Заголовок сообщения: |
|
|
Половинчатое решение нашлось!!
Проблемы возникали похоже из-за того, что все данные посылались printf-ом в одну строчку. На каком-то уровне происходило переполнение какого-то буфера (знать бы какого!!!) и начинались глюки.
Решение оказалось следующим - если часто вызывать printf("\n\r"), то глюки не возникают. Конечно это не очень удобно, но зато работает, в отличие, скажем, от вызова fflush.
Проблема с выводом как бы решилась, ЗАТО возникла НОВАЯ ПРОБЛЕМА с вводом. Причём природа этих двух проблем видимо схожая....
Лишние esc-последовательности на уровне клиента всё-таки вставляются - в конец и в начало посылаемых данных.
И в результате, если я хочу считать (scanf-ом или getch) с клавиатуры символ, то курсор передвигается в некую фиксированную от раза к разу позицию - где-то в середине экрана.
Никакие esc-последовательности позиционирования курсора не влияют на положение этой позиции.
Ещё могу отметиь, что использование различных telnet клиентов под windows/unix мне не помогло (и с вводом и с выводом)...
p.s. Решение "\n\r" не мог так долго найти, потому что пробовал по отдельности \r и \n, вместе почему-то не пришло в голову попробовать ... |
|
Вернуться к началу |
|
|
Dmitry.Karpov
Зарегистрирован: 30.11.2003 Сообщения: 415 Откуда: Moscow
|
Добавлено: Пт Янв 23 2004 20:03 Заголовок сообщения: |
|
|
Под Unix для общения с терминалом используют спец.библиотеку curses или ncurses. А для Windows Telnet - это чуждый ей протокол. _________________ Благословен Бог, сотворивший меня сисадмином! |
|
Вернуться к началу |
|
|
|