Применение обозначений опций termcap для управления терминалом пользователя

Опубликовано в Технологии > Серверные технологии Продолжение

Процедура tcout принимает в качестве параметров имя стандартной опции терминала termcap3 и указатель на выходной файл терминала. В ней используется функция getenv для извлечения информации о типе терминала из переменной среды TERM, а затем вызывается процедура tgetstr для поиска необходимой последовательности символов, позволяющей добиться указанного эффекта на экране терминала пользователя. И наконец, в ней вызывается процедура xfputs для вывода результирующей последовательности символов на терминал. /* Файл tcout - процедура tcout */

Вывод блока данных на сервер

Для вывода блока данных на сервер в процедуре telnet вызывается процедура sowrite.

/* Файл sowrite - процедура sowrite */
tinclude 
tinclude 
tinclude "tnfsm.h"
extern struct fsm trans sostab[];
extern int        sostatej
extern unsigned char    sofsm[][NCHRS];

Процедура sowrite обрабатывает в цикле каждый символ в указанном блоке и вызывает на выполнение конечный автомат sof sm для обработки каждого символа. www.sotmarket.ru - htc legend wtyf

Взаимодействие с клиентским процессом

Как и большинство клиентских программ TELNET, наша реализация предусматривает для пользователя возможность взаимодействия с клиентским процессом. Для этого пользователь вводит на клавиатуре управляющий символ, а затем команду. В табл. 27.1 приведен перечень возможных команд, которые могут следовать за управляющим символом, и указано их назначение. В соответствии с системой обозначений, принятой в протоколе TELNET, запись "X указывает, что символ формируется при удержании клавиши {Ctrl} и одновременном нажатии клавиши {Х}.

Файл telnet.h содержит символические определения для каждого из символов клавиатурных команд. Например, в нем определено, что клавиатурный управляющий символ KCESCAPE соответствует символу {Ctrl+l}, т.е. символу с восьмеричным значением 035.

При обнаружении введенного с клавиатуры управляющего символа клиентская программа переводит конечный автомат вывода в сокет из состояния KSREMOTE в состояние KSLOCAL и интерпретирует следующий символ как команду. Поскольку большинство команд состоят из одного символа, конечный автомат вывода в сокет обычно снова переходит в состояние KSREMOTE и выполняет исполнительную процедуру, связанную с этой командой. Например, если конечный автомат вслед за символом KCDC0N обнаруживает символ ESCAPE, он вызывает процедуру dcon.

Ответ на недопустимые команды. Если пользователь вслед за введенным с клавиатуры управляющим символом вводит нераспознанный символ, конечный автомат вывода в сокет вызывает исполнительную процедуру sonotsup, которая выводит сообщение об ошибке. Файл sonotsup.c содержит следующий код.

Похожие статьи