C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 156 - Создаем клиента почтового слота / Win 32 API / Win32 API

Шаг 156 - Создаем клиента почтового слота

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

#include "stdafx.h"
#include "windows.h"
#include "iostream.h"

void main()
{
	HANDLE hf=NULL;
	hf=CreateFile("\\\\.\\mailslot\\hello",GENERIC_WRITE,
		FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	if (hf!=INVALID_HANDLE_VALUE)
	{
		cout << "Ok Open" << endl;
		char buffer[255];
		strcpy(buffer,"hello mail slot");
		DWORD dwwr;
		if (WriteFile(hf,&buffer,strlen(buffer),&dwwr,NULL)!=0)
		{
			cout << "OK Write" << endl;
		}
	}
}

Если сервер будет запушен, то он получит сообщение:

156_1.gif (6821 b)

Да еще одно но. В MSDN написано, что если клиент открываеи слот прежде чем слот был создан сервером, то он получит INVALID_HANDLE_VALUE:

156_2.gif (2966 b)

Как раз этого INVALID_HANDLE_VALUE я и не получаю. Если ошибка в пути, то действительно файл не открывается.

CreateFile("\\\\.\\ailslot\\hello",

А при явном бредовом имени:

CreateFile(\\\\.\\mailslot\\hel23lo

Все происходит успешно кроме записи.

156_3.gif (3320 b)


Загрузить проект | | |
Автор Каев Артем.
[AD]