RPC
От: Autogen Ниоткуда  
Дата: 01.09.05 12:57
Оценка:
Вобщем постараюсь в кратце объяснить суть проблемы.
Есть две проги, первая оформлена как сервис, и является RPC сервером, прослушка идёт по TCP по заданому порту.
Вторая позволяет управлять настройками первой (порт и ещё кой чего)
Вобщем трабла такая, стартуем сервис, он открывает прослушку всё гуд, но когда я пытаюсь поменять порт из настроечной проги он,
почему то, честно открывает прослушку на новом но не закрывает на страром.
работа с RPC идёт по следующей схеме
1) задаём параметры прослушки RpcServerUseProtseqEp
2) региструем сервис RpcServerRegisterIf
3) ставим на блокирующую прослушку RpcServerListen
4) если засекли что надо поменять порт останавливаем прослушку RpcMgmtStopServerListening
5) разрегистрируем сервер RpcServerUnregisterIf
6) повторяем цикл
модель сервера оформлена в двух потоках, первый главный, непосредственно поток сервиса, который отслеживает,
что настройки надо поменять и вызывает RpcMgmtStopServerListening (ну и управляет работой дочернего потока).
И дочерний поток в котором идёт регистрация, блокирующая прослушка и разрегистрация.
Есть идеи что я делаю не так при закрытии прослушки?
Re: RPC
От: Tom Россия http://www.RSDN.ru
Дата: 01.09.05 13:09
Оценка:
Здравствуйте, 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>Есть идеи что я делаю не так при закрытии прослушки?

Может это?

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


В любом случае а что возвращает RpcMgmtStopServerListening ?
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
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),
в противном случае дочерний поток не смог бы завершится=))))) Но в том то и дело что он завершается, прослушка разрегистриуется и ресурсы потока я освобождаю что бы запустить по новой на новом порту, но видимо что то я не доделал и фактически прослушка на старом порту остаётся.
Re: RPC
От: Аноним  
Дата: 14.04.09 06:55
Оценка:
подниму тему
мож кто еще сталкивался и удалось решить эту проблему.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.