Re[2]: RPC
От: Autogen Ниоткуда  
Дата: 01.09.05 13:16
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Здравствуйте, Autogen, Вы писали:


A>>Вобщем постараюсь в кратце объяснить суть проблемы.

A>>Есть две проги, первая оформлена как сервис, и является RPC сервером, прослушка идёт по TCP по заданому порту.
A>>Вторая позволяет управлять настройками первой (порт и ещё кой чего)
A>>Вобщем трабла такая, стартуем сервис, он открывает прослушку всё гуд, но когда я пытаюсь поменять порт из настроечной проги он,
A>>почему то, честно открывает прослушку на новом но не закрывает на страром.
A>>работа с RPC идёт по следующей схеме
A>>1) задаём параметры прослушки RpcServerUseProtseqEp
A>>2) региструем сервис RpcServerRegisterIf
A>>3) ставим на блокирующую прослушку RpcServerListen
A>>4) если засекли что надо поменять порт останавливаем прослушку RpcMgmtStopServerListening
A>>5) разрегистрируем сервер RpcServerUnregisterIf
A>>6) повторяем цикл
A>>модель сервера оформлена в двух потоках, первый главный, непосредственно поток сервиса, который отслеживает,
A>>что настройки надо поменять и вызывает RpcMgmtStopServerListening (ну и управляет работой дочернего потока).
A>>И дочерний поток в котором идёт регистрация, блокирующая прослушка и разрегистрация.
A>>Есть идеи что я делаю не так при закрытии прослушки?

Tom>Может это?

Tom>

Tom>Note From the client-side, RpcMgmtStopServerListening is disabled by default. To enable this function, create an authorization function in your server application that returns TRUE (to allow a remote shutdown) whenever RpcMgmtStopServerListening is called. Use RpcMgmtSetAuthorizationFn to give the client access to the management function


Tom>В любом случае а что возвращает RpcMgmtStopServerListening ?


Не это не из той оперы, в этой статье говорится о вызове RpcMgmtStopServerListening с клиентской стороны, действительно такой приём существует, но здесь он абсолютно не к месту=))))
В данном примере RpcMgmtStopServerListening вызывается на сервере и отрабатывает нормально (читай возвращает RPC_S_OK),
в противном случае дочерний поток не смог бы завершится=))))) Но в том то и дело что он завершается, прослушка разрегистриуется и ресурсы потока я освобождаю что бы запустить по новой на новом порту, но видимо что то я не доделал и фактически прослушка на старом порту остаётся.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.