2017-01-10 6 views
1

Я хочу разработать клиент-серверное приложение Qt5/C++, используя удаленные вызовы процедур (RPC).Удаленный вызов процедуры - услуга, предлагаемая клиентом

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

И вот улов: RPC-библиотеки, которые я видел до сих пор, похоже, ожидают, что сервер предложит услугу, которую могут позвонить клиенты. Но я хочу сделать наоборот. Клиенты должны предлагать услуги, которые может вызывать сервер. Направление важно, потому что я хочу включить перенаправление портов только на стороне сервера, а не на стороне клиента.

В ЛИЭСЕ я проверил это:

Вопросы:

  • Есть ли причина этого ЛИЭС предлагать услуги только на стороне сервера?
  • Возможно, я пропустил эту часть в документации?
  • Есть ли RPC-библиотека, предлагающая услуги клиентской поддержки?
+1

Пожалуйста, проверьте: Это звучит, как вы хотите подключается к B и предлагает услуги B. – user4581301

+0

Да, вот как это должно работать. – Paul

+0

Не знаю ни одной руки. Вы считали, что A открывает туннель для B, B подключается и запрашивает службы от A до туннеля? – user4581301

ответ

1

gRPC поддерживает двунаправленную передачу, которая может удовлетворить ваши потребности.

Клиенты могут открывать долгое время на сервере, а затем сервер может «вызывать» клиентов, отправляя ответы на поток.

Клиент может ответить, отправив другое сообщение в поток.

http://www.grpc.io/docs/tutorials/basic/c.html