Клиент TELNET (практическая реализация)

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

В предыдущей главе рассматривается структура клиентской программы TELNET и показано, как в ней используются конечные автоматы для управления обработкой. В настоящей главе это описание завершается; в ней описана реализация методов обработки символов с использованием соответствующих исполнительных процедур. Основная Задача продвижения сайта, редизайн, как разработка веб сайтов.

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

В рассматриваемой программе основная часть функций протокола TELNET реализована с применением конечных автоматов. Они управляют обработкой, вырабатывают ответы на запросы и выполняют действия в соответствии с входящими управляющими последовательностями. При осуществлении в клиентской программе каждого перехода в конечном автомате вызывается процедура для выполнений действий, связанных с данным переходом. На рис. 26Л1 указаны имена процедур, соответствующих переходам в конечном автомате, в которых обрабатываются символы, поступающие с сервера.

Действие может быть простым (например, уничтожение входящего символа) или сложным (например, передача ответа путем отправки строки с обозначением локального терминала). Поскольку каждое действие оформлено в виде процедуры, спецификация конечного автомата становится единообразной и упрощается структура кода. Однако в связи с тем, что программное обеспечение разделено на ряд процедур, выполняющих отдельные действия, связь между процедурами невозможно понять без изучения работы конечного автомата, объединяющего эти процедуры.

В каждом из следующих разделов описаны отдельные исполнительные процедуры, связанные с переходами конечного автомата. За ними следует раздел с описанием формы вызова исполнительных процедур.

Регистрация типа запроса опции

В состоянии TSIAC (т.е. вслед за поступлением символа TCIAC) получение символа TCWILL или TCW0NT вызывает переход в состояние TSWOPT. Согласно спецификации конечного автомата, при этом переходе должна быть вызвана процедура recopt. Эта процедура регистрирует символ, вызвавший переход, для его дальнейшего использования. Аналогичным образом, в конечном автомате процедура recopt применяется для регистрации символа TCDO или TCDONT во время перехода в состояние TSDOPT. Файл recopt.с содержит следующий код.

int
recopt(FILE *sfp, FILE *tfp, int c) {
option_cmd « c; return 0;
}

Файл recopt.с содержит также код процедуры по_ор (сокращение от по operation — пустая операция). Поскольку в конечном автомате должны быть предусмотрены действия для всех возможных сочетаний состояния и входного символа, процедура по_ор может применяться для тех переходов, которые не требуют никаких действий. Например, не требует выполнения каких-либо действий переход из состояния TSDATA в состояние TSIAC. Поэтому в конечном автомате ему соответствует вызов процедуры по_ор.