Обнаружение потери соединения RPC со стороны сервера в Windows - PullRequest
3 голосов
/ 26 февраля 2009

Есть ли способ проверить состояние соединения RPC со стороны сервера? Я ищу способ определить, потеряно ли соединение с клиентом, будь то сбой клиента или другие проблемы с подключением.

Ответы [ 2 ]

4 голосов
/ 26 февраля 2009

Используйте Context Handles для управления состоянием сервера между вызовами для конкретного клиента. RPC использует keep-alive для обнаружения разъединений клиента и выполнит вашу процедуру обработки дескриптора контекста, если клиент отключится.

1 голос
/ 27 февраля 2009

Мо Фланаган ответ лучший ИМХО. Еще немного контекста.

Если вы используете дескрипторы привязки, то нет никакого способа отслеживания состояния между вызовами RPC, и концепция «разъединения клиента» по сути бессмысленна - вам все равно нужно вернуться из вызова RPC.

Если вы используете контекстные дескрипторы, то библиотека времени выполнения RPC вызовет функцию _rundown при отключении клиента.

Когда вызывается эта подпрограмма, сервер может очистить все, что ему нужно.

...