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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 29.12.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. Атопический дерматит 001
3. Итак вы узнаете что происходило с того самого момента когда Каролинка нашла голубую бусинку
4. реферат дисертації на здобуття наукового ступеня кандидата медичних наук
5. Пояснительная записка6
6. реферат дисертації на здобуття наукового ступеня кандидата економічних наук Київ ~
7. тематических групп фауны и флоры Земли
8. скалярна фізична величина що кількісно характеризує потужність переноситься хвилею в напрямку поширення
9. реферату- Приклади найбільших техногенних катастроф у світіРозділ- БЖД Приклади найбільших техногенних ка
10. сть людшт Ксть техн
11. ТЕМА- Возникновение педагогической профессии её развитие.
12. Пояснительная записка Рабочая программа разработана на основе Примерной программы основного общего образ
13. РЕФЕРАТ дисертації на здобуття наукового спупеня кандидата хімічних наук Київ 2002 Дисерт
14. Тема 9 Теории денег Теории природы сущности денег.
15. Доклад- Математика 16 века- люди и открытия.html
16. СевероВосточный Университет им
17. на тему- Тарас Мельничук
18. Это вода почвы растения животные минералы которые мы используем непосредственно или в переработанном
19.  Цель работы Определение расхода рабочего тела в трубопроводе методом дросселирования и
20. Законы Хаммурапи середина XVIII века до н