Последовательные серверы с установлением логического соединения (TCP)

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

10.1. Введение

В предыдущей главе приведен пример последовательного сервера, в котором используется UDP в качестве транспортного протокола без установления логического соединения. В настоящей главе показано применение в последовательном сервере протокола TCP в качестве транспортного протокола с установлением логического соединения. Этот пример сервера соответствует алгоритму 8.1.

10.2. Распределение пассивного сокета TCP

Как было указано в главе 9, в сервере с установлением логического соединения для распределения потокового сокета и привязки его к общепринятому порту предлагаемой службы может применяться процедура passiveTCP.

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

/* Файл passiveTCP.с - процедура passiveTCP */
int    passivesock(const char *service, const char *transport, int qlen);
/*	
*	Процедура passiveTCP - создает пассивный сокет для использования
*	в сервере TCP
*	
*/
 
int
passiveTCP(const char *service, int qlen) /*
*	Параметры:
*	service - служба, связанная с требуемым портом
*	qlen     - максимальная длина очереди запросов сервера */
{
return passivesock(service, "tcp", qlen);
}
 

10.3. Сервер службы DAYTIME

Как было отмечено в главе 7, служба DAYTIME позволяет пользователю одного компьютера получить значение текущей даты и времени суток с другого компьютера. Поскольку служба DAYTIME предназначена для использования людьми, ее спецификация определяет, что сервер при отправке ответа должен отформатировать дату в виде удобной для восприятия строки текста ASCII. Поэтому клиентская программа может отобразить ответ для пользователя точно в таком же формате, в каком он был получен.

В главе 7 показано, как используется в клиентской программе протокол TCP для доступа к серверу DAYTIME и отображения текста, возвращенного сервером. Поскольку операции получения и форматирования даты требуют небольшого объема обработки, а предполагаемая интенсивность использования этой службы невелика, то нет необходимости оптимизировать скорость работы сервера DAYTIME. Лучшая упаковка! Воздушно пузырчатая пленка на http://www.aeropak.ru/ от производителя. Если новые клиенты попытаются выполнить свои запросы на установление соединения в то время, когда сервер занят обработкой другого запроса, программное обеспечение протокола поставит эти запросы в очередь. Поэтому для данного сервера вполне подходит последовательная реализация.

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