Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

NamedPipe [D6, Win2k]


andrey__ ©   (2004-11-03 16:26:00) 

Вопрос такой: Подскажите можно ли после того как произошёл разрыв соединения между сервером канала и клиентом (клиент был закрыт) новому клиенту соединится к этому же экземпляру канала сервера.


kaZaNoVa   (2004-11-04 17:41:00) [1]

а я обычно на сокетах всё делаю :)))


Игорь Шевченко   (2004-11-04 12:45:00) [2]

andrey__   (04.11.04 11:38) [5]

Абсолютно разумная идея.

Пример ее реализации можно найти в Рихтер,Кларк "Программирование серверных приложений" или в Platform SDK\Samples\...\Service


Digitman   (2004-11-04 12:26:00) [3]


> - одно сервис работает постоянно
> - второе програмка управления работой сервиса (изменение
> параметров работы)
> Общение между приложениями решил организовать посредством
> NamedPipe


это понятно.
ничего против идеи не имею - пайпы значит пайпы ..


> В ней используется асинхронный режим (если у вас есть сомнения
> насчёт того что он плохо подходит для моей задачи прошу
> написать мне об этом).


сомнений у меня никаких нет.

но выбор того или иного режима использования пайпов (да и не только пайпов) как транспортного механизма отнюдь не определяется глобальной логикой приложения, с одинаковым успехом можно использовать и синхронный и асинхронный режимы чего-то там

касаемо выбора упомянутого режима можно лишь дать самые общие рекомендации.

например, в случае если приложение однопоточное и при этом нет гарантий "мгновенности" выполнения требуемых транспортных операций (коннекта/дисконнекта/ввода/вывода), предпочтение следует отдать асинхронному режиму и строить трансп.логику уже с учетом асинхронности трансп.событий ... в противных случаях можно задействовать и синхр.режим, однако ничто не мешает и в этих случаях пользовать асинхронную модель

асинхр.модель (с задействованием механизма уведомлений об одном или более событиях объекта) как нельзя хорошо подходит в случаях, когда трэд не является искл-но транспортным, как, например, основной трэд GUI-процесса, который, как известно, обязан кроме всего прочего ожидать/выбирать/диспетчеризовать/обрабатывать сообщения системы о событиях ввода/вывода пользовательского уровня


andrey__   (2004-11-04 11:38:00) [4]

>Digitman ©   (03.11.04 17:30) [4]

Более подробно опишу свою задачу: 2-ва приложения
- одно сервис работает постоянно
- второе програмка управления работой сервиса (изменение параметров работы)
Общение между приложениями решил организовать посредством NamedPipe

Т.к. информации я нашёл мало по NamedPipe (может плохо искал) отталкивался я в своей работе от статьи http://www.delphimaster.ru/articles/named_pipes/index.html#PageTop (это на случай если вы читали)

В ней используется асинхронный режим (если у вас есть сомнения насчёт того что он плохо подходит для моей задачи прошу написать мне об этом).


Digitman   (2004-11-03 17:30:00) [5]


> для соединения нового клиента к освободившемуся экземпляру
> канала сервер повторно должен использовать ConnectNamedPipe(hPipe,
> nil) ?


да, разумеется ... если ты не сделал перед этим Closehandle(hPipe)

насчет nil 2-м параметром - это требует отдельной дискуссии.


> каким образом сервер узнает что его экземпляр канала освободился


все зависит от синхр. или асинхр. режима использования пайпа.
конкретизируй режим.


andrey__   (2004-11-03 17:07:00) [6]

подскажи пожалуста как это сделать:
- каким образом сервер узнает что его экземпляр канала освободился
-  для соединения нового клиента к освободившемуся экземпляру канала сервер повторно должен использовать ConnectNamedPipe(hPipe, nil)?


Digitman   (2004-11-03 16:56:00) [7]


> andrey__   (03.11.04 16:26)  


можно.

толькло не забудь сделать экз-ру DisconnectNamedPipe, прежде чем ты сотворишь ему новый ConnectNamedPipe


Игорь Шевченко   (2004-11-03 16:40:00) [8]

Можно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо