2012-03-02 17 views
12

Ho bisogno di implementare un client websocket utilizzando C++. Ho già creato un server websocket di base usando ruby. Ma ora voglio testare la connessione usando c/C++. Sono disponibili librerie di facile utilizzo per implementare websockets in c/C++?Websocket Client in C++

Grazie in anticipo.

+9

Dannazione, io odio quando le persone scrivono _C/C++ _, deciditi, stai usando _C_ o _C++ _? Ci sono ** non ** la stessa lingua. – ApprenticeHacker

+0

Sono d'accordo con te .. ma il client chiede demo in c o C++. Perdonami per quello. :-) – hbdev012

+0

nessun problema. lol. – ApprenticeHacker

risposta

4

Ci sono boost :: asio e Poco.Net e probabilmente pochi altri, ma i socket berkeley della C-API non sono così difficili, quindi se non vuoi usare quelle librerie dai un'occhiata a loro.

Modifica: Scusa, probabilmente ho sbagliato con "websockets". Hai guardato qui? http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations (Tratto da Simple C++ WebSocket Client (draft 08+ compatible)?)

+0

Attualmente esaminandolo. E ho trovato websocket ++ utile per la mia implementazione. Spero che funzionerà. Grazie :-) – hbdev012

+0

+1 per andare con websocket ++: è molto conforme alle specifiche (RFC6455 finale) e prestazioni elevate. e basato su ASIO. – oberstet

+0

Consigliamo ASIO – 111111

6

C'è una grande biblioteca qui, Beast.WebSocket che si basa pesantemente su Boost.Asio: http://vinniefalco.github.io/

Ecco un esempio di programma che parla 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"; 
} 
+0

ho la versione Boost: 1.53.0, e sto ricevendo un errore fatale: boost/bestia/websocket.hpp: Nessun file o directory tale – AMB

+0

È necessario Boost 1.58.0 o successivo e devi aggiungere la directory bestia/include ai percorsi di inclusione. –

+0

ho scaricato l'ultima spinta e non posso trovare bestie, comunque ho scaricato boost e bestia e ho provato a compilare il mio codice e ho ricevuto molti errori, quindi ora collaudo con easywsclient, ma proverò questa libreria domani. idk cosa è andato storto, ha detto che alcuni file .hpp mancano di un messaggio di errore post completo domani, ci dovrebbe essere un passo alla volta, su come eseguire WebSocket Client. grazie – AMB

Problemi correlati