你可能会喜欢ZeroMQ这样的东西。可能不像一个完整的 RPC,而是一个可以用来制作 RPC 的原始字节消息传递框架。它简单、轻巧且具有令人印象深刻的性能。您可以在其之上轻松实现 RPC。这是直接来自手册的示例服务器:
//
// Hello World server in C++
// Binds REP socket to tcp://*:5555
// Expects "Hello" from client, replies with "World"
//
#include <zmq.hpp>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
int main () {
// Prepare our context and socket
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_REP);
socket.bind ("tcp://*:5555");
while (true) {
zmq::message_t request;
// Wait for next request from client
socket.recv (&request);
printf ("Received Hello");
// Do some 'work'
sleep (1);
// Send reply back to client
zmq::message_t reply (5);
memcpy ((void *) reply.data (), "World", 5);
socket.send (reply);
}
return 0;
}
此示例使用 tcp://*.5555,但如果您使用以下内容,则使用更高效的 IPC 技术:
socket.bind("ipc://route.to.ipc");
甚至更快的线程间协议:
socket.bind("inproc://path.for.client.to.connect");