web-dev-qa-db-fra.com

Websocket Client en C++

J'ai besoin d'implémenter un client Websocket en utilisant c ++. J'ai déjà créé un serveur websocket de base avec Ruby. Mais maintenant, je veux tester la connexion en utilisant c/c ++. Existe-t-il des bibliothèques faciles à utiliser pour implémenter des websockets dans c/c ++? 

Merci d'avance. 

14
hbdev012

Il y a boost :: asio et Poco.Net et probablement quelques autres, mais les sockets berkeley de C-API ne sont pas si difficiles, donc si vous ne voulez pas utiliser ces bibliothèques, jetez-y un œil.

Edit: Désolé, je vous ai probablement mal compris avec "websockets". Avez-vous regardé ici? http://fr.wikipedia.org/wiki/Comparison_Web_Socket_implementations (Tiré de Client WebSocket C++ simple (version 08 + compatible)? )

3
cooky451

Il existe une excellente bibliothèque, Beast.WebSocket, qui s'appuie fortement sur Boost.Asio: http://vinniefalco.github.io/

Voici un exemple de programme qui parle de 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";
}
8
Vinnie Falco

Websocket ++ devrait le faire pour vous. https://github.com/zaphoyd/websocketpp

bien que connaître les versions de Websocket implémentées par le serveur/client soit important.

7
Rich Elswick

Peut-être que cela peut encore être utile.

Il existe une bonne bibliothèque websocket développée pour C . Il existe quelques exemples montrant comment créer et gérer un socket Web.

http://libwebsockets.org/trac/libwebsockets (pour plus d'informations) ou https://github.com/warmcat/libwebsockets

2
jcfaracco

Après de longues recherches, j'ai trouvé ce projet pratique qui repose sur POCO. Je vais essayer et poster avec mon expérience.

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

Mettre à jour:

J'ai essayé d'intégrer cette bibliothèque trop de temps. Ce n'est pas encore complètement cuit. Il faut plus de travail avant de l'utiliser dans un contexte de production.

0
Homer6