前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】开源:websocketpp安装与使用

【C++】开源:websocketpp安装与使用

作者头像
DevFrank
发布2024-07-24 15:33:48
1430
发布2024-07-24 15:33:48
举报
文章被收录于专栏:C++开发学习交流

😏1. websocket介绍

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它使得客户端和服务器之间的数据交流变得更加实时、高效。相比传统的 HTTP 请求-响应机制,WebSocket 直接建立连接,并通过数据帧(Data Frame)来交换消息,从而避免了每次通信都要建立、断开连接的开销。

WebSocket 协议最早由 HTML5 规范提出,它可以用于 Web 应用程序、移动应用程序等不同类型的应用场景中。WebSocket 除了支持文本格式的消息外,还可以使用二进制数据格式发送数据,这使得 WebSocket 可以处理包括音频、视频等复杂类型的数据。

WebSocket++是一个C++编写的开源库,用于在Web应用程序中实现WebSocket协议的客户端和服务器端。

以下是WebSocket++的主要特点和功能:

  1. 遵循WebSocket协议:WebSocket++完全符合WebSocket协议标准(RFC 6455),支持基于TCP的双向通信,可以在客户端和服务器之间实时传输数据。

  1. 跨平台支持:WebSocket++可以在多种操作系统和平台上运行,包括Linux、Windows和MacOS等。它依赖于标准的C++库,因此可以很容易地移植到不同的环境中。

  1. 简单易用:WebSocket++提供了简洁而直观的API,使开发人员能够轻松地创建和管理WebSocket连接。它封装了底层的网络细节,提供了高级抽象,使开发人员能够专注于业务逻辑的实现。

  1. 灵活性和可扩展性:WebSocket++允许开发人员自定义扩展和插件,以满足特定的需求。它提供了丰富的钩子函数和事件处理机制,使开发人员能够自由地扩展和定制库的功能。

  1. 支持异步IO和多线程:WebSocket++支持异步IO模型,可以处理大量并发连接,提供高性能的实时通信。它还支持多线程处理,可以充分利用多核CPU的优势。

  1. SSL/TLS支持:WebSocket++提供了对SSL/TLS加密的支持,可以确保WebSocket连接的安全性。开发人员可以使用TLS/SSL证书和配置,进行加密通信。

  1. 扩展和子协议支持:WebSocket++支持WebSocket协议的扩展和子协议。开发人员可以自定义和实现自己的扩展和子协议,以满足特定的应用需求。

😊2. websocketpp安装

以ubuntu18.04为例:

websocketpp库依赖boost_system,因此首先安装boost库:

代码语言:javascript
复制
# apt安装
sudo apt-get install libboost-dev

安装websocketpp库(这里用0.8.2版本):

github地址:https://github.com/zaphoyd/websocketpp

代码语言:javascript
复制
# 编译安装
cd websocketcpp
mkdir build && cd build
cmake ..
make
sudo make install

安装完成:

在这里插入图片描述
在这里插入图片描述

😆3. websocketpp使用

通信例程测试:

代码语言:javascript
复制
# 服务端
cd websocketpp/examples/echo_server
g++ echo_server.cpp -o echo_server -lboost_system -lpthread
./echo_server
# 客户端
cd websocketpp/examples/echo_client
g++ echo_client.cpp -o echo_client -lboost_system -lpthread
./echo_client
# 默认通信在本地的9002端口

在线websocket收发测试:

测试地址:http://www.websocket-test.com/

测试如下:

端口重用问题可以看:http://t.csdn.cn/Z7AyU(一般关掉服务后直接重启会报错,等一会就可以)

根本解决就是在listen函数前加入这条,这样在Linux端重启程序后就不会报错了:

代码语言:javascript
复制
server.set_reuse_addr(true);	// 加入端口复用
server.listen(websocketpp::lib::asio::ip::tcp::v4(), uPort);

参考:

代码语言:javascript
复制
https://zhuanlan.zhihu.com/p/59925926
http://t.csdn.cn/CGAFL
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 😏1. websocket介绍
  • 😊2. websocketpp安装
  • 😆3. websocketpp使用
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档