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 руб./мес


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




 13 - Именованные каналы (PIPE) / Win 32 API / Win32 API

Шаг 13 - Именованные каналы (PIPE)

Именованные каналы PIPE используются для гарантированной передачи данных по сети. Создать именованный канал можно только на NT, в операционной среде Windows 95 можно использовать именованный канал только со стороны клиента. Поэтому для проверки данных примеров вам нужен NT. Можно сказать, что это выделенная линия для обмена данными между процессами. В NT можно посмотреть подобные выделенные линии. То есть их количество. Зайдите в Control Panel, выберите Server и щелкните на нем. Появится окно как ниже:

13_1.gif (3467 b)

Пункт Open Named Pipes может быть и не такой. Дело в том, что данным механизмом пользуются многие серьезные приложения, например, MS SQL Server. Мы с Вами создадим две простые консольные программы, которые будут эмулировать клиента и сервера. Итак сервер:

// CreateNamedPipe.cpp : Defines the entry point for the console application.
//

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

void main()
{
	HANDLE hp;
	hp=CreateNamedPipe("\\\\.\\pipe\\ipctest",PIPE_ACCESS_OUTBOUND,
		PIPE_TYPE_BYTE | PIPE_NOWAIT,1,0,0,NMPWAIT_USE_DEFAULT_WAIT,NULL);
	if (hp!=INVALID_HANDLE_VALUE)
	{
		int i;
		cin >> i;
	}
	else cout << "Error Create Name Pipe " << endl;
}

А теперь клиент:

// CreateFile.cpp : Defines the entry point for the console application.
//

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

void main()
{
	HANDLE hp;
	hp=CreateFile("\\\\Server\\pipe\\ipctest", GENERIC_READ,
		FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (hp!=INVALID_HANDLE_VALUE)
	{
		int i;
		cin >> i;
	}
	else cout << "Error pipe" << endl;
}

Как видите для создание канала надо вызвать функцию CreateNamedPipe, а для клиента создать файл указав сервер Server. Вы должны указывать свой сервер. То есть его имя в домене. А имя \\pipe\\ipctest должно совпадать и в клиенте и в сервере. Это имя канала.

Вот после запуска прогаммы видно, что количество именованных каналов увеличилось на единицу.

13_2.gif (7814 b)


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