Раньше я много работал на уровне сокетов, и если это то, что вам нужно, тогда да Boost :: Asio отлично, если немного сбивает с толку.
Однако, если вам просто нужно доставить данные между процессами (на одном и том же или разных компьютерах), я бы пошел немного дальше вверх по стеку и посмотрел бы что-то вроде ØMQ ; посмотрите, как легко получить «сообщение» от другого процесса:
zmq::context_t ctx(1);
zmq::socket_t sock(ctx, ZMQ_REQ);
sock.connect("tcp://localhost:5555");
zmq::message_t msg;
while(sock.recv(&msg)) {
std::string s(static_cast<char*>(msg.data()), msg.size());
std::cout << s;
}
Отправка также проста.
zmq::context_t ctx(1);
zmq::socket_t sock(ctx, ZMQ_REP);
sock.bind("tcp://*:5555");
std::string s = "Hello you!";
zmq::message_t msg(s.size());
memcpy(msg.data(), s.data(), s.size());
while(true) {
sock.send(msg);
sleep(1);
}
ZeroMQ очень легок и заботится о соединении, переподключении, передаче, кадрировании и т. Д. Все, что вам нужно, - это полезная нагрузка «сообщения», которую вы хотите показать на другой стороне канала (в этом случай, когда мы просто использовали простые строки).
Он также заботится о ряде более продвинутых методов обмена сообщениями, таких как pub-sub (несколько получателей одних и тех же сообщений).