Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Средства организации анонимных и именованных каналов в WindowsАнонимные каналы в Windows – это полудуплексное средство потоковой передачи байтов между процессами, функционирующими в пределах одной локальной ЭВМ. Анонимные каналы создаются процессом-сервером с помощью функции CreatePipe, которая имеет четыре параметра: 1. Описатель канала для чтения; 2. Описатель для записи; 3. Атрибуты безопасности канала; 4. Размер канала. В результате выполнения, данная функция возвращает первые два описателя. После выполнения этой функции, клиентскому процессу необходимо передать оба этих дескриптора, либо один из них, что обычно делается с помощью средств наследования процессов. Для наследования дескриптора нужно, чтобы клиентский процесс создавался бы функцией CreateProcess с флагом наследования, имеющим значение «истина». Получив нужный описатель, клиентский процесс, также как и процесс-сервер, может взаимодействовать с каналом, используя функции ReadFile, WriteFile. По окончании работы с каналом, оба процесса должны закрыть описатели канала с помощью функции CloseHandle. Именованные каналы, в отличие от анонимных, являются объектами ядра ОС, позволяющими организовать межпроцессный обмен не только в пределах локальной ЭВМ, но и в сети. Они обеспечивают дуплексную связь, и позволяют использовать передачу данных как потоком байтов, так и передачу с помощью сообщений. Обмен может быть как синхронным, так и асинхронным. Каналы должны иметь уникальные в пределах сети имена, построенные по правилам именования ресурсов в сетях Windows, например, \\ServerName\pipe\PipeName - для сети, а для локальной машины - \\.\pipe\PipeName. Именованный канал создается сервером с помощью системной функции CreateNamedPipe, у которой шесть параметров: 1. Имя канала с учетом упомянутых выше правил; 2. Способ передачи данных – потоковый или сообщениями; 3. Режим работы – синхронный или асинхронный; 4. Вид канала – односторонний или двусторонний; 5. Дескриптор защиты канала, запрещающий несанкционированный доступ к именованному каналу; 6. Максимальное число одновременных соединений по данному каналу. При повторном вызове данной функции могут быть созданы дополнительные реализации одного и того же канала. После вызова данной функции, сервер выполняет вызов функции ConnectNamedPipe, после чего ожидает отклика от клиентов. Клиенты соединяются с каналом с помощью функции CreateFile или CallNamedPipe, указывая при вызове имя созданного сервером канала. Клиент, имеющий право на работу с каналом, получает описатель, представляющий клиентскую сторону именованного канала, после чего работа серверной функции ConnectNamedPipe завершается. Её результатом является установление связи по именованному каналу. Начиная с этого момента, сервер и клиент могут выполнять обмен данными с помощью функций WriteFile, ReadFile. По окончании обмена, канал закрывается – CloseFile. Помимо указанных функций в системе имеется еще несколько функций для работы с каналами, например, функция PeekNamedPipe. Она используется для копирования данных из именованного канала без удаления их из канала. TransactNamedPipe – применяется для объединения операций чтения и записи в канал в одну операцию, которая называется транзакцией.
Дата добавления: 2014-10-10; просмотров: 348; Нарушение авторских прав Мы поможем в написании ваших работ! |