Здравствуйте,
обыскался в поисках решения проблемы — и по чатам побродил, и поисковики помучал, и коллег помучал. Но... пока нет ответа. Хотя по-моему решение проблемы есть. И, что интересно, в unix проблема не возникает.
КОНФИГУРАЦИЯ:
win2k, telnet применяется к 127.0.0.1, запущен telnet-server.
в telnet (или в HyperTerm) эмулируется vt100.
через telnet вызывается моя прога.
ПРОБЛЕМА:
Программа посылает на терминал совокупность esc-последовательностей (позиционирование курсора) и символов.
В некоторый момент, после того как послано на терминал строго определённое кол-во символов,
текст начинает выводиться в произвольных местах экрана, хотя до этого всё работало нормально.
ПРЕДПОЛОЖЕНИЯ:
Сначала думал, что printf какой-то очень интеллектуальный при работе с vt-100... Когда число символов (вместе с неотображаемыми в сумме) достигает 80, происходит посылка \n.
Потом посмотрел capture в hyper term и обнаружил, что некоторые esc-последовательности меняются местами в перехваченных пакетах, или вообще затирают друг-друга. Хотя при запуске программы без всякого telnet, можно обнаружить, что на консоль все esc-последовательности выводятся в нужном порядке (правда в ms-dos нет никакого vt-100, и на экране конечно маразм).
То есть, видимо, есть некий буфер в vt-100, который переполняется, и начинается некорректное поведение терминала. Причём сразу все символы, выводимые программой, посылаются в одном пакете (похоже на то), и естественно происходит переполнение.
Короче говоря, то ли дело в line feed, но я перепробовал все мне известные настройки (включая посылку соотв. esc-последов.),
то ли проблема с БУФЕРОМ vt-100 с одной стороны и пакетом tcp/ip для telnet с другой.
Но КАК её решить, и что именно решать?!
ИНТЕРЕСНО:
что под unix таких проблем не возникает — но ведь там я тестирую непосредственно, без telnet, просто устанавливаю export TERM=vt100