Я ищу простой интерфейс сокетов для C ++ с использованием MS Visual C ++ Express - PullRequest
0 голосов
/ 10 ноября 2010

Есть ли мертвый простой интерфейс сокетов в C ++, который я мог бы использовать с MS Visual Studio Express Edition? Я знаю, что есть библиотека WinSock, думаю, я ищу обертку вокруг того, что проще в использовании.

Я бы посчитал библиотеку java.net достаточно простой, однако мне нужно использовать MS VC ++ Express. Есть что-нибудь эквивалентное?

Ответы [ 2 ]

3 голосов
/ 10 ноября 2010

Раньше я много работал на уровне сокетов, и если это то, что вам нужно, тогда да 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 (несколько получателей одних и тех же сообщений).

3 голосов
/ 10 ноября 2010

Выезд Boost Asio .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...