рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Mailslot[Путь]ИмяПочтовогоЯщика

Mailslot[Путь]ИмяПочтовогоЯщика - раздел Образование, Обмен информацией между процессами с помощью каналов и почтовых ящиков В Последних Двух Случаях Размер Сообщений Ограничивается 400 Байтами. ...

В последних двух случаях размер сообщений ограничивается 400 байтами.

Запись и чтение данных в почтовых ящиках осуществляется аналогично записи и чтению в каналах.

Определение состояния Mailslot

Серверный процесс может определить текущее состояние Mailslot по его идентификатору с помощью функции GetMailslotInfo.

 

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

 

Программа-сервер

 

#include <windows.h>

#include <stdio.h>

#include <conio.h>

BOOL fReturnCode; // Код возврата из функций

DWORD cbMessages; // Размер сообщения в байтах

DWORD cbMsgNumber; // Количество сообщений в Mailslot

HANDLE hMailslot; // Идентификатор Mailslot

LPSTR lpszMailslotName = "\\.\mailslot\$MyFirstMailslot"; // Имя Mailslot

char szBuf[512]; // Буфер для передачи данных через Mailslot

DWORD cbRead; // Количество байт данных, принятых через Mailslot

 

int main()

{

// Создаем Mailslot, с именем lpszMailslotName

hMailslot = CreateMailslot(lpszMailslotName, 0,

MAILSLOT_WAIT_FOREVER, NULL);

// Если возникла ошибка, завершаем работу приложения

if(hMailslot == INVALID_HANDLE_VALUE)

{

printf("Error MailSlot Creating!!!n");

getch();

return 0;

}

while (1)

{

// Определяем состояние канала Mailslot

fReturnCode = GetMailslotInfo(hMailslot, NULL,

&cbMessages, &cbMsgNumber, NULL);

if(!fReturnCode)

{

printf("Get MailSlotInfo Error!!!n");

getch();

return 0;

}

// Если в Mailslot есть сообщения, читаем первое и выводим на экран

if(cbMsgNumber != 0)

{

if(ReadFile(hMailslot, szBuf, 512, &cbRead, NULL))

printf("Received %d bytes: <%s>n", cbRead, szBuf);

else printf("Error Data Transfer!!!n");

break;

}

}

getch();

CloseHandle(hMailslot);

return 0;

}

 

Программа-клиент

 

#include <windows.h>

#include <stdio.h>

#include <conio.h>

HANDLE hMailslot; // Идентификатор Mailslot

char szMailslotName[256]; // Буфер для имени Mailslot

char szBuf[512]; // Буфер для передачи данных через Mailslot

DWORD cbWritten; // Количество байт, переданных через Mailslot

LPSTR lpszMailslotName = "\\.\mailslot\$MyFirstMailslot"; // Имя Mailslot

 

int main()

{

// Создаем Mailslot

hMailslot = CreateFile(

lpszMailslotName, GENERIC_WRITE,

FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

// Если возникла ошибка, завершаем работу приложения

if(hMailslot == INVALID_HANDLE_VALUE)

{

printf("CreateFile Error!!!n");

getch();

return 0;

}

// Посылка данных через Mailslot

strcpy(szBuf,"Test MailSlot Connection");

if(!WriteFile(hMailslot, szBuf, strlen(szBuf) + 1, &cbWritten, NULL))

// Если произошла ошибка, выдаем сообщение

printf("Error Data Transfer!!!n");

else printf("Transferred %d bytes: <%s>n", cbWritten, szBuf);

CloseHandle(hMailslot);

getch();

return 0;

}

 

– Конец работы –

Эта тема принадлежит разделу:

Обмен информацией между процессами с помощью каналов и почтовых ящиков

Обмен информацией между процессами с помощью каналов и почтовых ящиков... Цель работы изучить возможности применения механизма обмена данными между процессами в операционной системе Windows...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Mailslot[Путь]ИмяПочтовогоЯщика

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Теоретические сведения
  Каналы. Через канал можно передавать данные только между двумя процессами. Один из процессов создает канал, другой открывает его. После этого оба процесса могут пере

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

Порядок выполнения работы
  1. Ознакомиться с постановкой задачи и исходными данными. В соответствии с номером по журналу определить вариант задачи. 2. Согласно рекомендациям, приведенным в исходных д

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги