C ++中的Websocket客户端

时间:2012-03-02 06:08:51

标签: c++ c websocket

我需要使用c ++实现websocket客户端。我已经使用ruby创建了一个基本的websocket服务器。但现在我想用c / c ++测试连接。是否有任何易于使用的库可用于在c / c ++中实现websockets?

提前致谢。

5 个答案:

答案 0 :(得分:8)

这里有一个很棒的库,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";
}

答案 1 :(得分:7)

Websocket ++应该为你做。 https://github.com/zaphoyd/websocketpp

虽然知道服务器/客户端工具的Websocket版本很重要。

答案 2 :(得分:3)

有boost :: asio和Poco.Net,可能还有其他一些,但是C-API berkeley套接字并不那么难,所以如果你不想使用这些库,请看看它们。 / p>

编辑:对不起,我可能用“websockets”搞错了。你看到这儿了吗? http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations (摘自Simple C++ WebSocket Client (draft 08+ compatible)?

答案 3 :(得分:2)

也许它仍然有用。

在C中开发了一个很好的websocket库。 有几个例子说明如何创建websocket并处理它。

http://libwebsockets.org/trac/libwebsockets(有关详细信息)或 https://github.com/warmcat/libwebsockets

答案 4 :(得分:0)

经过多次搜索,我发现这个方便的项目位于POCO之上。我将试一试,并以我的经验回复。

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

更新

试图将这个库集成太多时间。它目前尚未完全出炉。在生产环境中使用之前需要做更多的工作。