Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

сервером почтовых ящиков milslot server

Работа добавлена на сайт samzan.net: 2015-12-26

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 20.5.2024

PAGE  2

Межпроцессное взаимодействие

Почтовые ящики (mailslot)

Почтовые ящики обеспечивают только однонаправленные соединения. Каждый процесс, который создает почтовый ящик, является «сервером почтовых ящиков» (mailslot server). Другие процессы, называемые «клиентами почтовых ящиков» (mailslot clients), посылают сообщения серверу, записывая их в почтовый ящик. Входящие сообщения всегда дописываются в почтовый ящик и сохраняются до тех пор, пока сервер их не прочтет. Каждый процесс может одновременно быть и сервером и клиентом почтовых ящиков, создавая, таким образом, двунаправленные коммуникации между процессами.

Mailslot является псевдофайлом находящимся в памяти и вы должны использовать стандартные функции для работы с файлами, чтобы получить доступ к нему. Данные в почтовом ящике могут быть в любой форме – их интерпретацией занимается прикладная программа, но их общий объем не должен превышать 64 Кб. Однако, в отличии от дисковых файлов, mailslot’ы являются временными — когда все дескрипторы почтового ящика закрыты, он и все его данные удаляются. Заметим, что все почтовые ящики являются локальными по отношению к создавшему их процессу; процесс не может создать удаленный mailslot.

Когда процесс создает почтовый ящик, имя последнего должно иметь следующую форму:

\\.\mailslot\[path]name

Если вы хотите отправить сообщение в почтовый ящик на удаленный компьютер, то воспользуйтесь NETBIOS-именем:

\\ComputerName\mailslot\[path]name

Клиенты и серверы, использующие почтовые ящики, при работе с ними должны пользоваться следующими функциями:

Функции  серверов  почтовых  ящиков

Функция

Описание

CreateMailslot

Создает почтовый ящик и возвращает его дескриптор.

GetMailslotInfo

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

SetMailslotInfo

Изменение таймаута при чтении из почтового ящика.

Функции  клиентов  почтовых ящиков

Функция

Описание

CloseHandle

Закрывает дескриптор почтового ящика для клиентского процесса.

CreateFile

Создает дескриптор почтового ящика для клиентского процесса.

DuplicateHandle

Дублирование дескриптора почтового ящика.

WriteFile, WriteFileEx

Запись сообщений в почтовый ящик.

Рассмотрим последовательно все операции, необходимые для корректной работы с почтовыми ящиками.

1. Создание почтового ящика.

Эта операция выполняется процессом сервера с использованием функции CreateMailslot.

2. Запись сообщений в почтовый ящик.

Запись в mailslot производится аналогично записи в стандартный дисковый файл. Следующий код иллюстрирует как с помощью функций CreateFile, WriteFile и CloseHandle можно поместить сообщение в почтовый ящик.

3. Чтение сообщений из почтового ящика.

Создавший почтовый ящик процесс получает право считывания сообщений из него используя дескриптор mailslot’а в вызове функции ReadFile. Следующий пример использует функцию GetMailslotInfo чтобы определить сколько сообщений находится в почтовом ящике. Если есть непрочитанные сообщения, то они отображаются в окне сообщения вместе с количеством оставшихся сообщений.

Каналы (pipe)

Существует два способа организовать двунаправленное соединение с помощью каналов: безымянные и именованные каналы.  

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

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

При создании и получении доступа к существующему каналу необходимо придерживаться следующего стандарта имен каналов:

\\.\pipe\pipename

Если канал находится на удаленном компьютере, то вам потребуется NETBIOS-имя компьютера:

\\ComputerName\pipe\pipename




1. Тема урока Кто хочет стать профессионалом Планируемый результат
2. технических средств методических пособий и разработок
3. ИСТОРИЯ ВИТАМИНА В17 П Р Е Д У П Р Е Ж Д Е Н И Е Цель этой книги состоит в том чтобы доказать тот факт чт
4. Курсовая работа- Начисление и выплата пенсий по инвалидности
5. Расследование преступлений несовершеннолетних
6. Реферат з дисципліни- системи технологiй
7. Правила перевезення пива в пляшках Вино лікерогорілчані вироби пиво та безалкогольні напої перевозятьс
8. Основні характеристики твердих абразивно-полірувальних матеріалів
9. История культуры и искусств 1
10. Аюрведа Книга жизни 1 Китай 2 Индия 3 Египет 003
11. Отан тарихы ~аза~станда~ы д~нгендер- саны мен ~~рамыны~ динамикасы 18972007 жж
12. Статья- Что значит управлять предприятием
13. Елементи адміністративного позов
14. Гучність звуку. Висота й тембр звуку
15. Алания. Министерство финансов Республики Северная ОсетияАлания является органом исполнительной власти Р
16. транспортных происшествий- ДТП виды ДТП правила учета ДТП Количественный качественный и топографическ
17. денежного возмещения износа ОФ; 2 инвестирования на простое и расширенное воспроизводство; 3
18. поспособствовать
19. и Б рис. В.2. для ограждения сторон фарватеров отличаются друг от друга.html
20. . 1 Наличие максимальных потенциалов на запирающих сетках.