Możesz wziąć pod uwagę ØMQ. Jest to wieloplatformowa biblioteka wiadomości, która między innymi "automagicznie" obsługuje problemy z połączeniem (w tym ponowne łączenie w przypadku awarii). Istnieją powiązania w wielu językach, a biblioteka czmq zapewnia przyjemny interfejs wysokiego poziomu dla wielu typowych zastosowań ØMQ.
Możesz łatwo użyć wzoru Żądaj odpowiedzi dla struktury RPC, ale podczas czytania guide możesz zauważyć, że inne wzorce są bardziej odpowiednie.
Znalazłem RPC framework zbudowany na górze ØMQ, ale ponieważ najwyraźniej używasz C++, prawdopodobnie to ci nie pomoże (poza nauką). Zobacz także this question. Jeśli chcesz, możesz z łatwością swobodnie toczyć własne.
Licencja ØMQ to "LGPLv3 +", czyli w zasadzie LGPL z wyjątkiem statycznego łączenia. czmq przechodzi na MPLv2, więc nie zdziwiłbym się, gdyby ØMQ podążył za nim wkrótce. Zgodnie z komunikatem twórcy ØMQ, MPLv2 jest bardzo podobny do licencji "LGPLv3 +", ale jest bardziej akceptowalny dla prawników z przedsiębiorstw.
Możesz także rozważyć kod dla swojego kodu interfejsu. Użyliśmy czmq (w tym zbeacon do automatycznego wykrywania węzłów) wraz z serializacją boost i działa bardzo dobrze. W przeszłości używałem XML-RPC i zdecydowanie wolę ØMQ dla oferowanej przez niego funkcjonalności obsługi połączeń.