Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 27.11.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. тематика механика; развитие науки не могло не оказать влияния на философию.html
2. Как стать психологом
3. Иностранный капитал необходим республике как средство адаптации национальных хозяйственных субъектов к ра
4.  Происхождение государства и права Изучение процесса происхождения государства и права имеет не тольк
5. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата медичних наук Київ ~ Дисерта
6. винторезный станок 1М 64 11 045 353 АПРТО 3X10
7. Великая Отечественная Война (1941-1945 гг) Историческая роль СССР в разгроме фашизма
8. тематической статистике Контрольная работа имеет 10 вариантов от 0 до 9
9. Расчет стандартных посадок для подшипников скольжения, червячного колеса и вала
10. Плюсминусинтересно
11. Юридической психологии
12. Медыцынская карта стацыянарнага хворага
13. Взаємодія суспільства і природи ~ об~єктивно існуюче явище
14. Ковшовый элеватор
15. Привлечение лица в качестве обвиняемого (законодательство Украины)
16. то за высокими домами оно угадывалось в игре золотистых бликов пробегающих по оконным стеклам по тонкому у
17. портрета Максутов Магжан 2 G Краткий но очень насыщенный курс психологий который мне довелось изучить
18. Порядок примирительной процедуры в стадии подготовки к судебному разбирательству (анализ проекта нового АПК РФ)
19. Уже шестнадцать или еще шестнадцать
20. РАСЧЕТ ГОДОВОЙ ПРОИЗВОДСТВЕННОЙ ПРОГРАММЫ БЛОКА МАРТЕНОВСКИХ ПЕЧЕЙ