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

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 测试连接和数据的发送、接受

http://www.xdnf.cn/news/3234.html

相关文章:

  • 高效管理远程服务器Termius for Mac 保姆级教程
  • 第三部分:走向共产主义 第二章:科技发展(续)
  • 使用Dagster定义数据资产:从入门到实践
  • Unity编辑器扩展之导出项目中所有预制体中文本组件文字内容
  • 提示词工程(GOT)把思维链推理过程图结构化
  • 移动端akamai风控分析
  • 【阿里云大模型高级工程师ACP习题集】2.7 通过微调增强模型能力 (下篇)(⭐️⭐️⭐️ 重点章节!!!)
  • 【LLM】基于 Ollama 部署 DeepSeek-R1 本地大模型
  • 2025 Java八股文深度解读版:原理+场景+高频追问答案
  • 【Unity】如何解决UI中的Button无法绑定带参数方法的问题
  • 【网工第6版】第6章 网络安全②
  • JESD204B 探究
  • VS Code技巧2:识别FreeCAD对象
  • Spring的源码Spring的上下文怎么存储
  • Electron Forge【实战】自定义菜单 -- 顶部菜单 vs 右键快捷菜单
  • 百度网盘golang实习面经
  • HTML from表单中只有一个input时,按回车键后表单自动提交(form表单的一个小坑)
  • 【C++】频繁分配和释放会产生内存碎片
  • Win下的Kafka安装配置
  • Tauri v1 与 v2 配置对比
  • 全面解析SimHash算法:原理、对比与Spring Boot实践指南
  • transformer-实现解码器Decoder
  • DIT(Diffusion In Transformer)学习笔记
  • Java继承中super的使用方法
  • SI5338-EVB Usage Guide(LVPECL、LVDS、HCSL、CMOS、SSTL、HSTL)
  • 电子病历高质量语料库构建方法与架构项目(智能数据目录篇)
  • SD - WAN 跨境网络专线部署方式介绍
  • 大数据在远程医疗中的创新应用:如何重塑医疗行业的未来
  • python + segno 生成个人二维码
  • 全球气象站点年平均降水数据(1929-2024)