当前位置: 首页 > news >正文

windows 使用websocket++ (C++环境)

一、简介
websocket官方网址:http://websocket.org/

websocketpp官方网址:https://www.zaphoyd.com/websocketpp

websocketpp使用手册:https://www.zaphoyd.com/websocketpp/manual/

websocketpp 是 C++ 的 WebSocket 客户端/服务器库.

它是一个开源的只包含头文件的 C++ 库,它实现了 RFC6455 WebSocket 协议。它允许向 C++ 程序中集成 WebSocket 客户端和服务器功能。它使用可交换的网络传输模块,包括基于 C++ iostreams 的和基于 Boost Asio 的。

二、开发准备
使用websocketpp库,需要websocketpp的头文件及它所依赖的boost头文件及库文件。

1.websocketpp下载:
git 网址:https://github.com/zaphoyd/websocketpp

2.boost下载:
(1)window环境可以直接在https://sourceforge.net/projects/boost/files/boost-binaries/上下载编译好的库文件。

三、demo开发
1.websocketpp中自带的demo:
上文下载的websocketpp开发包中有一个examples文件夹,其中echo_client和echo_server分别是客户端和服务端的demo的代码,可参考。

2.基于Qt框架开发的客户端demo:
(1)新建工程,将websocketpp头文件引入,在项目栏右键,将websocketpp文件夹全部加入,在工程文件(.pro)中自动加载里面的文件。如图所示:

在这里插入图片描述

2)加载boost库及其头文件

window:此处写了绝对路径

LIBS += -LD:\kilaCode\boost_1_69_0\stage\lib
INCLUDEPATH += D:\kilaCode\boost_1_69_0
3)客户端:
client m_c;
std::string uri = “ws://127.0.0.1:9002”;//访问的地址
try
{
// Set logging to be pretty verbose (everything except message payloads)
m_c.set_access_channels(websocketpp::log::alevel::all);
m_c.clear_access_channels(websocketpp::log::alevel::frame_payload);
// Initialize ASIO
m_c.init_asio();
// Register our message handler
m_c.set_message_handler(bind(&on_message,&m_c,::_1,::_2));
websocketpp::lib::error_code ec;
client::connection_ptr con = m_c.get_connection(uri, ec);
if (ec)
{
std::cout << "could not create connection because: " << ec.message() << std::endl;
}
// Note that connect here only requests a connection. No network messages are
// exchanged until the event loop starts running in the next line.
m_c.connect(con);

// Start the ASIO io_service run loop
// this will cause a single connection to be made to the server. c.run()
// will exit when this connection is closed.
m_c.run();
}
catch (websocketpp::exception const & e)
{
std::cout << e.what() << std::endl;

}
4)测试

通过http://coolaf.com/tool/chattest网站去连接ws://127.0.0.1:9002 测试连接和数据的发送、接受

相关文章:

  • 探索MySQL InnoDB:事务、日志与锁的奥秘
  • Redis应用场景实战:穿透/雪崩/击穿解决方案与分布式锁深度剖析
  • PostgreSQL可串行化快照隔离和冻结处理
  • Kaamel白皮书:MCP安全实践
  • 论软件系统的透明性挑战及应对策略
  • ArcGIS+GPT:多领域地理分析与决策新方案
  • 产品月报|睿本云4月产品功能迭代
  • JAVA学习-练习试用Java实现“实现一个生成对抗网络(GAN) :用于图像生成或数据增强”
  • 容器内启动GUI界面相关问题。
  • PostgreSQL中的Replication_slot
  • YOLOv11改进:视觉变换器SwinTransformer目标检测网络
  • 泰迪杯特等奖案例学习资料:基于多模态融合与边缘计算的智能温室环境调控系统
  • Java 多线程进阶:什么是线程安全?
  • OpenCV 图形API(75)图像与通道拼接函数-----将 4 个单通道图像矩阵 (GMat) 合并为一个 4 通道的多通道图像矩阵函数merge4()
  • 【游戏ai】从强化学习开始自学游戏ai-2 使用IPPO自博弈对抗pongv3环境
  • linux jounery 日志相关问题
  • echarts
  • 【KWDB 创作者计划】_KWDB能帮我的项目解决什么问题
  • QML学习:使用QML实现抽屉式侧边栏菜单
  • 北京亦庄机器人马拉松:人机共跑背后的技术突破与产业启示
  • 湖北鄂城:相继4所小学有学生腹泻呕吐,供餐企业负责人已被采取强制措施
  • 《求是》杂志发表习近平总书记重要文章《激励新时代青年在中国式现代化建设中挺膺担当》
  • 坚持科技创新引领,赢得未来发展新优势
  • 国务院安委会对辽宁辽阳一饭店重大火灾事故查处挂牌督办
  • 人社部:一季度全国城镇新增就业308万人,同比增加5万人
  • 跟着京剧电影游运河,京杭大运河沿线六城举行京剧电影展映