以下是一个简单的C++ WebSocket客户端示例代码,使用Boost.Asio库实现。该代码在Windows和Linux上均可编译运行,需要安装Boost库。
#include <iostream>
#include <string>
#include <boost/asio.hpp>
#include <boost/beast.hpp>
using tcp = boost::asio::ip::tcp;
namespace websocket = boost::beast::websocket;
int main(int argc, char** argv)
{
if (argc != 3) {
std::cerr << "Usage: " << argv[0] << " host port" << std::endl;
return 1;
}
try {
// 初始化 asio 库
boost::asio::io_context io_context;
// 解析服务器地址和端口号
tcp::resolver resolver(io_context);
auto const results = resolver.resolve(argv[1], argv[2]);
// 创建 WebSocket 连接对象并建立连接
websocket::stream<tcp::socket> ws(io_context);
ws.connect(results);
// 发送消息到服务器
ws.write(boost::asio::buffer("Hello, world!"));
// 接收来自服务器的消息并输出到屏幕上
boost::beast::multi_buffer buffer;
ws.read(buffer);
std::cout << boost::beast::buffers(buffer.data()) << std::endl;
} catch (std::exception const& e) {
std:cerr << "Error: " << e.what() << std:endl;
return 1;
}
return 0;
}
这个程序首先从命令行参数中读取WebSocket服务器的地址和端口号。然后使用Boost.Asio解析这些参数,并与WebSocket服务器建立连接。程序发送一个消息到服务器,等待接收来自服务器的响应,并将其输出到屏幕上。