Si può considerare ØMQ. È una libreria di messaggistica multipiattaforma che, tra le altre cose, "automagicamente" gestisce i problemi di connessione (inclusa la riconnessione in caso di guasti). Esistono binding in molte lingue e la libreria czmq offre un'interfaccia C di alto livello per molti usi comuni di ØMQ.
È possibile utilizzare facilmente il modello di richiesta di risposta per un framework RPC, ma leggendo lo guide, è possibile che altri pattern siano più appropriati.
Ho trovato uno RPC framework costruito su ØMQ, ma dal momento che si utilizza apparentemente C++, questo probabilmente non vi aiuterà (a parte per scopi di apprendimento). Vedi anche this question. Probabilmente potresti facilmente arrotolare il tuo, se vuoi.
La licenza di ØMQ è "LGPLv3 +", che è fondamentalmente LGPL con un'eccezione di collegamento statico. czmq si sta spostando su MPLv2, quindi non sarei sorpreso se ØMQ seguisse presto l'esempio. Secondo un messaggio del creatore di ØMQ, l'MPLv2 è molto simile alla licenza "LGPLv3 +", ma più accettabile per gli avvocati delle imprese.
Si può anche considerare boost serialization per il proprio codice di interfaccia. Abbiamo usato czmq (incluso zbeacon per il rilevamento automatico dei nodi) insieme alla serializzazione boost, e funziona molto bene. In passato ho utilizzato XML-RPC e preferisco di gran lunga ØMQ per la funzionalità di gestione delle connessioni che offre.