- 2024-08-19c++ 命名空间别名踩坑
c++命名空间别名踩坑遇到的问题在现代c++以前(c++11),实现别名的主要方式主要是通过typedef关键字实现的.今天写boost/asio代码的时候,遇到了这样的一个问题,催生了我的这篇文章加深我的印象.//我想写boost.asio中的内容,经常使用boost::asio::ip::xxxxxxx.//正是因为
- 2024-08-02网络编程基本流程介绍
参照:恋恋风尘的官方博客讲解:C++asio网络编程笔记下载地址:gitee:笔记/c++/网络编程/asio网络编程基本流程网络编程的基本流程对于服务端是这样的服务端socket——创建socket对象。bind——绑定本机ip+port。listen——监听来电,若在监听到来电,则建立起连接。accept——
- 2024-06-14boost-Asio 基础学习1.5--域名主机名解析筛选resolver
在开发过程中往往看见的不是ipv4或者ipv6,而是主机的域名!如www.badiu.com而上期文章也说了
- 2024-06-13boost-Asio 基础学习2 --socket 服务端和客户端简单通讯
已经写了两期文章了!这是第三期现在也到使用asio库实现一些基础的小功能了
- 2024-04-19为什么有很多出名开源的C/C++方面的高性能网络库,比如libevent,boost-asio,有些企业还要自己写?
为什么有很多出名开源的C/C++方面的高性能网络库,比如libevent,boost-asio,有些企业还要自己写? 我个人很倾向用著名的开源软件来完成功能需求,但是发现在实际开展中很多人会反对开源,而要求自己实现一套,我不知道是我考虑太少,还是他们太武断。 因为KPI的原因更多
- 2024-01-14boost框架 创建websocket非阻塞服务
#include<iostream>#include<boost/asio.hpp>#include<boost/beast.hpp>#include<boost/beast/websocket.hpp>namespaceasio=boost::asio;namespacebeast=boost::beast;namespacewebsocket=beast::websocket;usingtcp=asio::
- 2023-11-29boost asio在linux接收不到255.255.255.255的应答
echo0>/proc/sys/net/ipv4/conf/all/rp_filterecho0>/proc/sys/net/ipv4/conf/eth0/rp_filterhttps://stackoverflow.com/questions/47829979/how-to-receive-a-udp-broadcast-sent-to-255-255-255-255-using-boost-asio
- 2023-11-25C++ Boost 异步网络编程基础
Boost库为C++提供了强大的支持,尤其在多线程和网络编程方面。其中,Boost.Asio库是一个基于前摄器设计模式的库,用于实现高并发和网络相关的开发。Boost.Asio核心类是io_service,它相当于前摄模式下的Proactor角色。所有的IO操作都需要通过io_service来实现。在异步模式下,程序除了发起
- 2023-11-24基于Boost.Asio实现端口映射器
Boost.Asio是一个功能强大的C++库,用于异步编程和网络编程,它提供了跨平台的异步I/O操作。在这篇文章中,我们将深入分析一个使用Boost.Asio实现的简单端口映射服务器,该服务器能够将本地端口的数据包转发到指定的远程服务器上。端口映射通常用于将一个网络端口上的流量转发到
- 2023-11-1019.5 Boost Asio 传输结构体
同步模式下的结构体传输与原生套接字实现方式完全一致,读者需要注意的是在接收参数是应该使用socket.read_some函数读取,发送参数则使用socket.write_some函数实现,对于套接字的解析同样使用强制指针转换的方法。服务端代码如下所示#include<iostream>#include<boost/asio.hpp>
- 2023-11-1019.8 Boost Asio 异或加密传输
异或加密是一种对称加密算法,通常用于加密二进制数据。异或操作的本质是对两个二进制数字进行比较,如果它们相同则返回0,如果不同则返回1。异或加密使用一把密钥将明文与密文进行异或运算,从而产生密文。同时,使用相同的密钥进行解密将返回原始的明文数据。在异或加密中,加密和解密使用的
- 2023-11-1019.5 Boost Asio 传输结构体
同步模式下的结构体传输与原生套接字实现方式完全一致,读者需要注意的是在接收参数是应该使用socket.read_some函数读取,发送参数则使用socket.write_some函数实现,对于套接字的解析同样使用强制指针转换的方法。服务端代码如下所示#include<iostream>#include<boost/asio.hpp>
- 2023-11-1019.8 Boost Asio 异或加密传输
异或加密是一种对称加密算法,通常用于加密二进制数据。异或操作的本质是对两个二进制数字进行比较,如果它们相同则返回0,如果不同则返回1。异或加密使用一把密钥将明文与密文进行异或运算,从而产生密文。同时,使用相同的密钥进行解密将返回原始的明文数据。在异或加密中,加密和解密使用
- 2023-11-1019.9 Boost Asio 同步字典传输
这里所代指的字典是Python中的样子,本节内容我们将通过使用Boost中自带的Tokenizer分词器实现对特定字符串的切割功能,使用BoostTokenizer,可以通过构建一个分隔符或正则表达式的实例来初始化tokenizer。然后,可以使用该实例对输入字符串进行划分。tokenizer将在输入字符串中寻找匹配
- 2023-11-0919.12 Boost Asio 获取远程进程
远程进程遍历功能实现原理与远程目录传输完全一致,唯一的区别在于远程进程枚举中使用EnumProcess函数枚举当前系统下所有活动进程,枚举结束后函数返回一个PROCESSENTRY32类型的容器,其中的每一个成员都是一个进程信息,只需要对该容器进行动态遍历即可得到所有的远程主机列表。服务端
- 2023-11-0819.13 Boost Asio 发送TCP流数据
Boost框架中默认就提供了针对TCP流传输的支持,该功能可以用来进行基于文本协议的通信,也可以用来实现自定义的协议。一般tcp::iostream会阻塞当前线程,直到IO操作完成。首先来看服务端代码,如下所示在代码中首先通过GetFileSize读取文件行数,当有了行数我们就可以使用循环的方式依次调
- 2023-11-0819.13 Boost Asio 发送TCP流数据
Boost框架中默认就提供了针对TCP流传输的支持,该功能可以用来进行基于文本协议的通信,也可以用来实现自定义的协议。一般tcp::iostream会阻塞当前线程,直到IO操作完成。首先来看服务端代码,如下所示在代码中首先通过GetFileSize读取文件行数,当有了行数我们就可以使用循环的方式依次调
- 2023-11-0819.13 Boost Asio 发送TCP流数据
Boost框架中默认就提供了针对TCP流传输的支持,该功能可以用来进行基于文本协议的通信,也可以用来实现自定义的协议。一般tcp::iostream会阻塞当前线程,直到IO操作完成。首先来看服务端代码,如下所示在代码中首先通过GetFileSize读取文件行数,当有了行数我们就可以使用循环的方式依次调
- 2023-11-0819.6 Boost Asio 文本压缩传输
Base64是一种二进制到文本的编码方案,用于将二进制数据转换为ASCII字符串格式。它通过将二进制数据流转换为一系列64个字符来工作,这些字符都可以安全地传输到设计用于处理文本数据的系统中。如下代码中我们使用Boost中提供的base64_from_binary头文件实现两个函数,其中Base64Decode
- 2023-11-0719.7 Boost Asio 传输序列化数据
序列化和反序列化是指将数据结构或对象转换为一组字节,以便在需要时可以将其存储在磁盘上或通过网络传输,并且可以在需要时重新创建原始对象或数据结构。序列化是将内存中的对象转换为字节的过程。在序列化期间,对象的状态被编码为一组字节,并可以保存或传输到另一个位置。序列化后的
- 2023-11-0219.10 Boost Asio 同步文件传输
在原生套接字编程中我们介绍了利用文件长度来控制文件传输的方法,本节我们将采用另一种传输方式,我们通过判断字符串是否包含goodbyelyshark关键词来验证文件是否传输结束了,当然了这种传输方式明显没有根据长度传输严谨,但使用这种方式也存在一个有点,那就是无需确定文件长度,因为无需
- 2023-11-0219.10 Boost Asio 同步文件传输
在原生套接字编程中我们介绍了利用文件长度来控制文件传输的方法,本节我们将采用另一种传输方式,我们通过判断字符串是否包含goodbyelyshark关键词来验证文件是否传输结束了,当然了这种传输方式明显没有根据长度传输严谨,但使用这种方式也存在一个有点,那就是无需确定文件长度,因为无需
- 2023-10-22cmake 基本配置
cmake_minimum_required(VERSION3.14.3)project(myCppVERSION1LANGUAGESCXX)set(CMAKE_CXX_STANDARD11)set(ASIO_INCLUDE${CMAKE_CURRENT_SOURCE_DIR}/dep/asio-1.28.0/include)set(HTTPLIB_INCLUDE${CMAKE_CURRENT_SOURCE_DIR}/dep/cpp-httplib/)#include_
- 2023-09-09Boost.Asio网络库 学习笔记
Asio网络库学习笔记Boost官网:https://www.boost.org/Boost库许可证://CopyrightJoeCoder2004-2006.//DistributedundertheBoostSoftwareLicense,Version1.0.//(SeeaccompanyingfileLICENSE_1_0.txtorcopyat//https://www.boos
- 2023-08-25Boost Asio Tutorial: Daytime
学一下C++的Boost.Asio。Daytime.0如何调试自己编写的TCP/UDP客户端和服务器教程默认我们会这个。万一有人不会呢,我说下我的方法:在wsl使用nc命令来调试,感觉挺方便的。这里安利一下Linux的nc命令。nc命令全称netcat,很原始的一个工具,但是很方便。用法也很多,借助Linux的