【C++】4.websocket:websocketpp安装与使用

news2025/6/8 11:52:27

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍websocketpp的安装与使用。
学其所用,用其所学。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. websocket介绍
    • :blush:2. websocketpp安装
    • :satisfied:3. websocketpp使用

😏1. websocket介绍

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

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

WebSocket 的优点包括:

实时性:WebSocket 支持实时通信,使得客户端与服务器可以快速响应对方的请求。 高效性:相比 HTTP 协议,WebSocket
不需要反复连接、断开连接,因此减少了网络通信的延迟时间和资源消耗。 跨平台:WebSocket
协议可以跨越多种浏览器和操作系统,从而为开发者和用户提供了更广泛的选择。

总的来说,WebSocket 提供了一种快速、实时、高效的通信方式,使得 Web 应用程序和移动应用程序等可以更加灵活地处理复杂的数据交互需求。

😊2. websocketpp安装

以ubuntu18.04为例:

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

# apt安装
sudo apt-get install libboost-dev

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

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

# 编译安装
cd websocketcpp
mkdir build && cd build
cmake ..
make
sudo make install

安装完成:

在这里插入图片描述

😆3. websocketpp使用

通信例程测试:

# 服务端
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(一般关掉服务后直接重启会报错,等一会就可以)

参考:

https://zhuanlan.zhihu.com/p/59925926
http://t.csdn.cn/CGAFL

在这里插入图片描述

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】《On Java》第12章 集合 读书笔记

结合JavaGuide和《On Java》的集合笔记。 不要使用时代的眼泪Vector、HashTable、Stack。 文章目录 1 泛型与类型安全的集合2 基本概念3 添加一组元素★4 集合的打印5 ListtoArray的使用 ★Collection.sort的使用 6 ArrayList6.1 ArrayList成员变量6.2 ArrayList构造函数6.3 A…

没有公网IP,如何实现数据共享?

数据共享就是让在不同地方使用不同计算机、不同软件的用户能够读取他人数据并进行各种操作、运算和分析。不同层次、不同部门信息系统间,信息和信息产品的交流与共用,就是把信息这一种在互联网时代中重要性越趋明显的资源与其他人共同分享。 数据共享有…

SpeechGen:用提示解锁语音语言模型(Speech LM)的生成能力

论文链接: https://arxiv.org/pdf/2306.02207.pdf Demo: https://ga642381.github.io/SpeechPrompt/speechgen.html Code: https://github.com/ga642381/SpeechGen 引言与动机 大型语言模型 (LLMs)在人工智能生成内容(AIGC…

手动渲染农场和自助云渲染农场的区别

手动渲染农场和自助云渲染农场是两种常见的渲染方式,它们各有优缺点。手动渲染农场指的是在本地使用自己的硬件设备进行渲染,而自助云渲染农场则是利用云服务商提供的计算资源进行渲染。对于需要渲染大规模项目的设计师或工作室来说,选择一种…

网络安全主要学些什么比较重要

网络安全学什么? 第一阶段:基础 入门的第一步是学习当下的一些主流的安全工具和配套的原理基础 第二阶段:学习基础知识 这个阶段的时候对网络安全就有了基本的了解,通过第一步的学习,理论上的知识一定都明白了&…

Python精美图快速上手

seaborn是一个基于Python的数据可视化库,它建立在Matplotlib之上,提供了一种更简单、更美观的方式来创建统计图形。seaborn旨在帮助用户轻松地生成有吸引力和信息丰富的可视化结果。 以下是seaborn库的一些主要特点: 美观的默认样式&#xf…

获取jar包所在路径位置,项目文件夹Path

获取jar包所在路径位置,项目文件夹位置 方法1 new ApplicationHome().getDir().getPath();方法1就是调用了方法2 System.getProperty("user.dir") System.getProperty("user.dir")String源码👇 private File findHomeDir(File source) {File…

Python 标准库 - 并发执行

Python 标准库 - 并发执行 1. 简单介绍2. 程序示例2.1 threading 编程示例2.2 multiprocessing 编程示例2.3 concurrent.futures 编程示例 1. 简单介绍 Python 标准库 非常庞大,所提供的组件涉及范围十分广泛,官方参考链接https://docs.python.org/zh-cn…

【sentinel】令牌桶算法在Sentinel中的应用

令牌桶算法 令牌桶算法介绍 令牌桶算法,又称token bucket。 从图中我们可以看到,令牌桶算法比漏桶算法稍显复杂。首先,我们有一个固定容量的桶,桶里存放着令牌(token)。桶一开始是空的,token以…

【深度学习】0-2 深度学习相关数学概念的简单总结-概率与信息论

样本空间 样本空间是一个实验或随机试验所有可能结果的集合,随机试验中的每个可能结果称为样本点。例如投掷一个骰子,那么样本空间就是{1,2,3,4,5,6}。 随机变量 随机变量,顾名思义…

IDEA全局设置JDK、Maven、编码格式

本机已安装JDK版本: 本机已安装Maven版本: 一、IDEA设置全局JDK设置 File---->New Projects Settings---->Structure for New Projects... 先将本地安装的JDK添加到SDK 将项目SDK设置为刚刚添加的本地JDK版本 File---->New Projects Settings-…

Webstorm 加载vue项目时,特别卡顿,完美解决。觉得有用加好友打赏

觉得有用加好友打赏:QQ:854138497 上图cpu直接干满。 根据上图提示,直接 disable hints,或者到下图的settings里面设置。 Code vision取消后,webstorm 明显就不卡了。记得重启webstorm。 还有一种方式,根…

完美解决MacOS关于ld: library not found for -lnetcdff错误

1. 问题描述 在使用Intel版本的Mac编译某个程序时出现了错误,显示如下图。 说明:libnetcdff是netcdf的Fortran的接口,如下ChatGPT解释。 2. 出现的原因 原因是Makefile中定义的静态库链接并没有在系统默认的库路径下找到,默认…

Jmeter HTTP Cookie管理器的使用

目录 前言: 1、在HTTP信息头管理器组件中添加Cookie信息 (1)测试计划内包含的元件 (2)请求取样器内容 (3)HTTP信息头管理器内容 (4)查看结果 2、使用HTTP Cookie管…

你想知道的 MySQL 性能调优方式,都在这里

前言:对于性能测试来说,数据库的监控是尤为的重要,以及对数据库进行调优,用以提升性能,是能在短期内有显著的效果的,本文针对MySQL数据库进行分析如何定位MySQL数据库的性能问题。 关键 MySQL 统计指标 如…

一张软考系统架构设计师证书到底能证明了什么?

软考证书证明你考过了软考高级架构,拥有了评高级职称的资格! 证书的作用还有: 1、以考代评:软考证书可以用来评职称 2、积分落户:可用于积分落户,加相应的分,软考高级职业资格都几乎可以直接…

Tinker 组件修复,踩坑

1、You need to use a Theme.AppCompat theme (or descendant) with this activity. 复现步骤 补丁加载成功之后重启应用,再退出应用重进闪退 日志 TinkerUncaughtHandler catch exception:java.lang.IllegalStateException: You need to use a Theme.AppCompat th…

Cesium教程(十七):淹没分析

Cesium教程(十七):淹没分析 1、什么是淹没分析 淹没分析是根据某片区域的地形及洪水流量速度,动态模拟该地形区域水位逐渐上涨的淹没过程。该功能可适用于山区、丘陵等地形起伏较大区域,模拟洪水涨到安全限定高度的淹没过程,为防洪水救灾提供一定的参考。此外,还可以为河…

红帽认证常见答疑(二):电脑配置、实验环境和考试环境、可以自学吗

学习红帽需要配置什么样的电脑? RHCE推荐学员自己的电脑内存在16G左右,RHCA推荐学员电脑内存在32-64G,且最好配置128G以上的固态硬盘,如果自己没有该配置的电脑,誉天可以提供远程学习环境,可以随时随地连接…

Java中常用的工具类——字符串类

提示:字符串类是编程中最常用的一种数据类型,比较重要❗ 文章目录 前言一、字符串类创建对象方式静态创建动态创建 二、String字符串内容不可改变三、字符串常用方法length方法charAt方法substring方法indexOf与lastIndexOfindexOf方法lastIndexOf方法 替…