Telnet
В нашем примере клиентской программы TELNET для интерпретации последовательностей символов, поступающих с сервера или введенных пользователем на клавиатуре, применяются три конечных автомата. Каждый входящий символ вызывает переход в конечном автомате. При выполнении каждого перехода в клиентской программе вызывается процедура, которая реализует действие, связанное с переходом. Мебель, пескоструйный шкаф купе фото на сайте dom-90.ru
В настоящей главе описаны исполнительные процедуры трех конечных автоматов, из которых состоит рассматриваемый пример клиентской программы. Некоторые из этих действий являются простыми, а другие — весьма сложными. Основным недостатком организации клиентского программного обеспечения в виде исполнительных процедур для конечного автомата является то, что программа становится сложной для восприятия. Результирующий код может оказаться затруднительным для понимания, поскольку невозможно определить, как связаны между собой отдельные процедуры, не обращаясь к схемам конечных автоматов.

Дополнительные сведения об опциях TELNET и стандарты протокола по поддержке каждой из опций с примерами кода приведены в нескольких документах RFC. В документе рассматривается опция передачи управления, а в документе описана опция эхо-повтора символов. В документе рассматривается опция, которая управляет 8-битовой двоичной передачей. И наконец, в документе обсуждается опция согласования типа терминала и связанная с ней опция уточнения типа терминала.
- Терминалы некоторых типов поддерживают несколько режимов эмуляции, в результате чего появляется возможность определить целый ряд имен типов терминала для одного терминального устройства. Прочитайте документ RFC 1091. Как может использоваться в клиенте список имен терминалов при согласовании типа терминала с сервером?
- Прочитайте стандарт протокола TELNET, чтобы узнать, когда именно сервер должен переключиться с передачи данных, закодированных с использованием кодировки сетевого виртуального терминала, на передачу 8-битовых двоичных данных. В частности, как осуществляется передача данных сервером после того, как он выразил свою готовность передавать двоичные данные, но не получил подтверждение?
- Передает ли клиент сообщение WILL или DO, требуя от сервера применения конкретной опции? Что передает сервер, требуя применения опции от клиента?
- Что означает параметр режима 0_WR0NLY 10_CREAT 10JTRUNC в вызове функции open, содержащемся в процедуре scrwrap?
- Определите затраты времени на вывод сообщения в клиенте после получения запроса на применение опции. Воспользуйтесь доработанной версией клиента для обращения к разным серверам. Какие запросы на применение опций они передают автоматически?
- Что произойдет, если клиент и сервер одновременно отправят друг другу, соответственно, сообщения DO ECHO и WILL ECHO?
- Что произойдет, если клиент отправит сообщение DO ECHO на сервер, в котором уже разрешен режим ECHO?