我需要使用c ++实现websocket客户端。我已经使用ruby创建了一个基本的websocket服务器。但现在我想用c / c ++测试连接。是否有任何易于使用的库可用于在c / c ++中实现websockets?
提前致谢。
答案 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
更新
试图将这个库集成太多时间。它目前尚未完全出炉。在生产环境中使用之前需要做更多的工作。