Подтвердить что ты не робот

Клиент Websocket в С++

Мне нужно реализовать клиент websocket с помощью С++. Я уже создал базовый сервер websocket, используя ruby. Но теперь я хочу проверить соединение с помощью c/С++. Существуют ли простые в использовании библиотеки для реализации websockets в c/С++?

Спасибо заранее.

4b9b3361

Ответ 1

Есть boost:: asio и Poco.Net и, возможно, несколько других, но сокеты C-API berkeley не так уж трудны, поэтому, если вы не хотите использовать эти библиотеки, посмотрите на них.

Изменить: Извините, я, вероятно, ошибся с "websockets". Вы смотрели здесь? http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations (Взято из Simple С++ WebSocket Client (черновик 08+ совместим)?

Ответ 2

Websocket ++ должен сделать это за вас. https://github.com/zaphoyd/websocketpp

зная, какие версии Websocket используют сервер/клиент.

Ответ 3

Там отличная библиотека, Beast.WebSocket, которая в значительной степени основывается на Boost.Asio: http://vinniefalco.github.io/

Вот пример программы, которая говорит websocket:

#include <beast/websocket.hpp>
#include <beast/buffers_debug.hpp>
#include <boost/asio.hpp>
#include <iostream>
#include <string>

int main()
{
    // Normal boost::asio setup
    std::string const host = "echo.websocket.org";
    boost::asio::io_service ios;
    boost::asio::ip::tcp::resolver r(ios);
    boost::asio::ip::tcp::socket sock(ios);
    boost::asio::connect(sock,
        r.resolve(boost::asio::ip::tcp::resolver::query{host, "80"}));

    using namespace beast::websocket;

    // WebSocket connect and send message using beast
    stream<boost::asio::ip::tcp::socket&> ws(sock);
    ws.handshake(host, "/");
    ws.write(boost::asio::buffer("Hello, world!"));

    // Receive WebSocket message, print and close using beast
    beast::streambuf sb;
    opcode op;
    ws.read(op, sb);
    ws.close(close_code::normal);
    std::cout <<
        beast::debug::buffers_to_string(sb.data()) << "\n";
}

Ответ 4

Может быть, это может быть полезно.

Существует хорошая библиотека websocket, разработанная для C. Есть несколько примеров того, как вы можете создать веб-узел и обработать его.

http://libwebsockets.org/trac/libwebsockets (для получения дополнительной информации) или https://github.com/warmcat/libwebsockets

Ответ 5

После долгих поисков я нашел этот удобный проект, который находится поверх POCO. Я собираюсь дать ему попробовать и отправить обратно с моим опытом.

https://github.com/hannon235/socket.io-poco/blob/master/examples/TestClient/main.cpp

Update:

Пытался интегрировать эту библиотеку слишком долго. В настоящее время он не полностью запекается. Это требует дополнительной работы перед использованием в настройках производства.