

| стрелялки |
| спорт |
| драки |
| стратегии |
| гонки |
| логические |
| азартные |
| аркады |
| эротические |
| фильмы онлайн |
| Каналы |
|
Выбор термина канал (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(). Вот в двух словах перечень подвигов, на которые способны безымянные каналы. Так как излагаемый материал посвящен совместной работе в сети, то на этом с анонимными каналами заканчиваем и переходим к их именованным собратьям. Мы уже знаем, что благодаря удивительным способностям именованного канала можно связать сервер и одно или даже группу клиентских приложений, выполняющихся на разных компьютерах, узами односторонней (симплексной) или двусторонней (дуплексной) связи. |
Фильмы смотреть бесплатно
fishki.tv
