.
Monday 21st of May 2012    

Информация

Счетчики

Голосование

Лучшая марка телефона
 

Реклама

фильмы онлайн

фильмы онлайн


Информирование о канале
загрузка...

Как сервер именованных каналов, так и клиентское приложение имеют право ознакомиться с основными техническими характеристиками работающего канала. Для этого предназначена функция:

лшв аа яш1 function GetNamedPipeInfo(hPipe : THandle; var Flags : cardinal;

OutBufferSize, InBufferSize, MaxInstances : pointer) : boolean;

Первый параметр hPipe - дескриптор опрашиваемого канала, все остальные параметры информационные. Так Flags расскажет о типе канала: поток байт (PIPE_TYPE_BYTE) или поток сообщений (PIPE_TYPE_MESSAGE), а также кем вызван метод - сервером (PIPESERVEREND) или клиентом (PIPE_CLIENT_END). Параметры OutBufferSize и InBufferSize проинформируют о размерах выходного и входного буферов. Параметр MaxInstances вернет данные о максимально допустимом количестве каналов. В случае успешного завершения функция возвращает значение true, а при ошибке - false.

С помощью следующей функции определяется состояние канала:

лшя аа ащ function GetNamedPipeHandleState(hPipe : THandle; State, CurInstances, MaxCollectionCount, CollectDataTimeout : pDWORD; UserName : pAnsiChar; MaxUserNameSize : cardinal) : boolean;

Передав в функцию дескриптор именованного канала hPipe, в ответ мы получим следующие данные:

Состояние канала (параметр State). Этот указатель на двойное слово DWORD может возвратить два флага: флаг PIPEREADMODEMESSAGE свидетельствует

о том, что канал специализируется на передаче сообщений, а флаг PIPE_ NOWAIT - признак того, что при обращении к каналу функции будут возвращать управление в программу немедленно, не дожидаясь окончания выполнения.

• Общее количество существующих на момент вызова метода экземпляров канала передается в переменную, на которую ссылается указатель CurIn-stances.

• Клиент именованного канала осуществляет передачу данных не по мере их поступления, а накапливает их и отправляет серверу в составе пакета. Максимальный размер пакета (в байтах) будет возвращен при помощи указателя MaxCollectionCount.

• Чтобы информация, находящаяся в пакете, была гарантированно передана серверу (даже если пакет не будет полностью наполнен), процесс передачи дополнительно контролируется таймером. По истечении времени тайм-аута в адрес сервера отсылается даже полупустой пакет данных. Таким образом, на клиентской стороне информация никогда не залеживается. О времени тайм-аута нас информирует указатель CollectDataTimeout.

ОК сожалению, нельзя обращаться к параметрам MaxCollectionCount и CollectDataTimeout, если серверный и клиентский окончания канала находятся на одной и той же станции. В этом случае вместо указателя на переменную надо передавать nil.

• Если вызов метода осуществляется со стороны сервера, то можно узнать имя пользователя, работающего на клиентском компьютере. Эти данные возвратит указатель UserName. При этом максимальная длина имени ограничивается последним параметром MaxUserNameSize.


загрузка...
 

Самое популярное:

bottom

карта сайта