.
Monday 21st of May 2012    

Информация

Счетчики

Голосование

Лучшая марка телефона
 

Реклама

фильмы онлайн

фильмы онлайн


Каналы
загрузка...

Выбор термина канал (pipe) обусловлен тем, что связь между приложениями осуществляется по некоей виртуальной трубе, проложенной между двумя соединенными сетью компьютерами. Одно приложение в эту трубу «кричит», а второе - «слушает». Впрочем, процесс переговоров может осуществляться и одновременно, так как технологией предусмотрен как симплексный, так и дуплексный режимы связи.

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

ОК сожалению, сервер именованного канала может быть создан только на платформах Windows® Server 2003, Windows® 2000 Server и Windows® NT Server. Все остальные операционные системы поддерживают лишь клиентскую сторону интерфейса именованных каналов.

Различают анонимные (anonymous) и именованные (named) каналы. Реализация анонимных каналов попроще; они не предназначены для работы по сети, но готовы выполнять функции, аналогичные обычному динамическому обмену данными (DDE) между сервером и клиентом в рамках одного-единст-венного компьютера. С помощью метода Win32 API CreatePipe() сервер анонимного канала формирует разделяемую область памяти, а взамен получает два дескриптора, описывающих эту область.

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

Теперь, если, например, клиенту достался дескриптор с правом на запись, клиентское приложение приобретает способность отправлять серверу команды. Сервер с помощью своего дескриптора читает команды из разделяемой памяти и иногда, когда у него хорошее настроение, их даже выполняет. Непосредственно операции чтения и записи осуществляются так, как будто клиент и сервер работают с файлом. Для этого превосходно подходят методы FileRead() и FileWrite() из модуля SysUtils. Если кого-то это удивило, то рекомендую перечитать раздел этой главы, посвященный почтовым слотам (mailslots). Для освобождения дескриптора как всегда вызывается метод CloseHandle().

Вот в двух словах перечень подвигов, на которые способны безымянные каналы. Так как излагаемый материал посвящен совместной работе в сети, то на этом с анонимными каналами заканчиваем и переходим к их именованным собратьям.

Мы уже знаем, что благодаря удивительным способностям именованного канала можно связать сервер и одно или даже группу клиентских приложений, выполняющихся на разных компьютерах, узами односторонней (симплексной) или двусторонней (дуплексной) связи.


загрузка...
 

Самое популярное:

Наши партнеры

bottom

карта сайта