Boost asio 服务简单例子

网络库asio脱离boost 前言 之前公司用的boost库作为底层开发库,网络方面用的aiso,aiso是很好用的c++异步编程库,但boost功能太多,太大,编译使用起来很麻烦。 随着c++11的诞生,代码对boost的依赖已经逐步减少,因为boost的依赖库太过庞大, boost的很多优秀的模块都已经加入到c++11,如智能指针,auto,bind,智能锁,线程等等。 asio的官网已经说明可以脱离boost独立编译了。... 阅读详情

正如我们在boost asio保姆级教程中之前提到的,服务器为客户端指定一个地址,客户端在该地址上向服务器发出请求。服务器监听新连接并做出相应的响应。现在,让我们来看看我们的服务器开发步骤。

在做任何其他事情之前,我们需要先导入我们的库

#include <iostream>
#include <boost/asio.hpp>

using namespace boost::asio;
using ip::tcp;
using std::string;
using std::cout;
using std::endl;

使用 namespace std 被认为是一个不好的做法,因为它会在全局范围内引入各种名称,并且可能导致歧义。由于我们只需要三个属于 std 命名空间的名称,最好单独导入它们,或者按照自己的喜好操作。

我们希望服务器接收来自客户端的消息,然后进行回复。为此,我们需要两个函数来进行读取和写入。

string read_(tcp::socket & socket) {
       boost::asio::streambuf buf;
       boost::asio::read_until( socket, buf, "\n" );
       string data = boost::asio::buffer_cast<const char*>(buf.data());
       return data;
}
void send_(tcp::socket & socket, const string& message) {
       const string msg = message + "\n";
       boost::asio::write( socket, boost::asio::buffer(message) );
}

让我们稍微详细解释一下。在这里,我们使用了 TCP 套接字进行通信。boost::asio 的 read_until 和 write 函数被用来执行所需的功能。boost::asio::buffer 创建了一个用于通信的数据缓冲区。

现在我们有了我们的函数,让我们启动服务器

int main() {
      boost::asio::io_service io_service;
//监听新连接
      tcp::acceptor acceptor_(io_service, tcp::endpoint(tcp::v4(), 1234 ));
//套接字创建
      tcp::socket socket_(io_service);
//等待连接
      acceptor_.accept(socket_);
//读取操作
      string message = read_(socket_);
      cout << message << endl;
//写入操作
      send_(socket_, "Hello From Server!");
      cout << "服务器向客户端发送了 Hello 消息!" << endl;
   return 0;
}

在使用asio时,需要一个 io_service 对象。tcp::acceptor 用于监听客户端请求的连接。我们向函数传递了两个参数;一个是我们之前声明的相同的 io_service 对象,下一个是连接的端点被初始化为IPv4和端口1234。接下来,服务器将创建一个套接字并等待来自客户端的连接。一旦连接建立,我们的读取和写入操作将被执行,然后连接将被关闭。

boost:asio编译 参考:http://hi.baidu.com/need_for_dream/blog/item/c14a28086a504c33e92488b5.html 环境: VS2010,          boost1.38.0,解压缩后放在,D:/boost_1_38_0。  編譯bjam(这个我没有试过,转过来以后参考)利用Visual Studio 2005 Command 阅读详情

相关推荐

boost.asio

as(async):异步。

2301_80355452的博客 882

Boost::asio范例分析 服务端

main函数要求程序调用者传递3个参数:服务器IP地址,端口号和文档根目录.其中IP地址可以是IPv4或IPv6格式.接着创建server对象实例,将传递进来的IP地址,端口号,文档根目录作为server对象的构造函数参数传递到处理程序中.最后调用server的run成员函数启动服务端处理例程.     http::server::server s(argv[1], argv[2], argv[

henreash的专栏 2万+

asio通信的两个小例子

<br /><br />ASIO的简单的通信的例子:<br />服务器端测试可用代码:<br /> <br />#include<ctime><br />#include<iostream><br />#include<string><br />#include<boost/bind.hpp><br />#include<boost/shared_ptr.hpp><br />#include<boost/enable_shared_from_this.hpp><br />#include<boost/asi

jphaoren的专栏 3027

简易asio tcp server

#include <iostream> #include "boost/asio.hpp" using namespace std; using namespace boost::asio; io_service G_IOS; int main() { ip::tcp::endpoint ep(ip::tcp::v4(), 2110); ip::tcp::acceptor ac...

wangzhicheng2013的专栏 1101

QT 环境下编写 BOOST ASIO程序

Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库,一般和Boost库一起使用,也可以独立使用。 单独使用asio很简单,直接引用头文件就可以: #include "asio.hpp" 但是在asio的很多例子程序中,经常会调用boost库,比如: #include &lt;boost/bind.hpp&gt; ... ...         boost::bind...

cnbizz的专栏 1316

Boost.Asio TCP服务器与客户端开发实战

Boost.Asio是一个跨平台的C++库,它提供了进行网络和低级I/O编程的API。它主要用于构建异步I/O应用程序,适用于需要高效率和高性能I/O操作的场景。Boost.Asio为开发者提供了一系列工具,用于处理网络连接、数据传输、定时器以及异步事件处理等。在这一章节,我们将探讨Boost.Asio的来历、设计理念以及如何集成到项目中去。Boost是一个经过千锤百炼、可移植、提供源代码的C++库,它包含广泛的各种功能,用于提高C++语言的功能。

weixin_36047538的博客 652

Boost在Windows上的配置以及的Boost::asio C/S同步例子

一、 下载boost boost.org http://www.boost.org/users/download/ boost_1_51_0.zip 下载并解压到C盘根文件夹 二、编译boost 1、生成生命行程序   执行bootstrap.bat 2、编译   执行b2.exe,完成后显示: The Boost C++ Libraries were successfully ......

Think88666的博客 1872

ARM Memory Compiler实战指南:从参数配置到GDSII生成的全流程解析

本文详细解析了ARM Memory Compiler在SRAM设计中的全流程应用,从基础参数配置到GDSII文件生成。涵盖SRAM类型选择、核心参数配置策略、高级优化技巧及TSMC 28nm工艺下的实战案例,帮助IC设计工程师高效实现存储器模块的优化设计。

game4的博客 414

Boost.Asio学习之简单的HTTP服务器

Boost.asio实现简单的HTTP服务器

上善若水 1万+

【STM32单片机】RS485通信—基于STM32G474芯片

做项目需要用485通信来控制Go电机参考资料:【【STM32F103C8T6系列】10. 实验例程——485(USART串口)通讯实验】 https://www.bilibili.com/video/BV19w411r7ka/?PDF: STM32G474 开发指南 正点原子 DMG474 开发板教程 第28章485只是物理层,代码逻辑还是UART串口通信,相当于是电路有RS485转换芯片,所以还是用UART串口通信方式。

m0_48808835的博客 3646

基于ESP32的气象雷达站设计与实现

物联网技术通过嵌入式设备实现环境数据的实时采集与可视化,其中ESP32凭借其双核处理器和WiFi/蓝牙功能成为热门选择。本项目利用ESP32结合LVGL图形库,构建了一个低成本气象监测系统,通过OpenWeatherMap API获取全球气象数据并在7英寸触摸屏上动态展示。系统采用三级优化策略处理高分辨率雷达图,包括服务端预处理、硬件加速解码和显示增强,有效解决了内存占用和帧率问题。在物联网设备开发中,类似方案可应用于智能家居、农业监测等场景,特别是需要实时数据可视化的领域。通过SPIFFS存储和zlib压

weixin_42524864的博客 421

boost::asio c++ 网络编程socket通信一个简单例子

1 说明: 客户端: 连续发送n个字符串消息 ("client_msg_n"), 服务端: 处理客户端消息, 返回对应的字符串信息("client_msg_n<<handled") 2 代码: 2.1 客户端client main.cpp #include <iostream> #include <boost/asio.hpp> using namespace std; //client int main(int argc, char **argv) {

惊鸿一博 4508

灰度发布、蓝绿部署、双活架构与数据同步/备份/迁移

本文系统介绍了现代互联网系统的核心部署策略与数据管理技术体系。主要内容包括:1)三种服务发布策略(灰度发布、蓝绿发布、滚动发布)的原理、实现方式和适用场景对比;2)高可用架构设计(同城双活、异地双活、异地多活)的技术方案;3)数据同步机制、备份策略与迁移方案的设计要点。文章通过架构图、流程图和配置示例详细展示了各类技术的实施方法,并分析了不同方案的优劣及风险控制措施,为构建高可用、高可靠的分布式系统提供了完整的技术指南。

zane的博客 514

Boost beast 使用例子

最近接触到了Boost beast,这里记录一下。 Introduction Beast is a C++ header-only library serving as a foundation for writing interoperable networking libraries by providinglow-level HTTP/1, WebSocket, and netw...

zzhongcy的专栏 1万+

YOLO26跨时代升级!YOLO26 MLCA注意力机制解读

摘要: 本文提出了一种基于多级上下文聚合(MLCA)注意力机制的改进卷积神经网络。MLCA模块通过局部和全局注意力机制动态调整特征图权重,结合了ECA注意力与自适应池化,显著提升特征表达能力。实验表明,添加MLCA后模型mAP提升12.11,准确率提高5.43。文中详细解析了MLCA1模块的工作原理,包括局部/全局池化、卷积操作和注意力加权机制,并介绍了集成MLCA的Bottleneck_MLCA模块。该机制通过多层次特征融合,在保持计算效率的同时增强模型对关键特征的敏感性。最后提供了YOLOv26-MLC

m0_71589036的博客 281

【QNX+Android虚拟化方案】136 - QNX 侧 Coredump 文件解析

【QNX+Android虚拟化方案】136 - QNX 侧 Coredump 文件解析

|~~~热爱生活、努力学习的小伙汁~~~| 1904

Boost.Asio 的 TCP 通信教程

本教程展示了一个简单的 Boost.Asio 同步 TCP 通信示例,从服务器端和客户端代码的编写到编译和运行,涵盖了关键的操作步骤。读者可以在此基础上探索更复杂的功能,如并发处理多个客户端连接或使用异步操作,以满足更高级的应用需求。

FHKHH的博客 1995

【教程4>第6章>第26节】基于FPGA的MMSE信道估计与均衡系统实现与整体测试,并对比LS信道估计

通过前面几个章节的学习,我们完成了MMSE信道估计和均衡系统。为了进一步验证MMSE信道估计的性能,我们在系统的最后,增加一个信道估计误差计算程序。由于MMSE信道估计,其主要优势在SNR较小时提现,因此测试对比时,我们在testbench中,将SNR设置为2db。然后m值,我们不考虑一个固定值,而是一直累加,直到所设置的仿真时间结束。通过对比可以看到,MMSE信道估计性能优于LS信道估计。这样方便FPGA中的误差计算。

FPGA/MATLAB学习教程/源码/项目合作开发 1595

Boost asio 官方教程

7.1. 概述 本章介绍了 Boost C++ 库 Asio,它是异步输入输出的核心。 名字本身就说明了一切:Asio 意即异步输入/输出。 该库可以让 C++ 异步地处理数据,且平台独立。 异步数据处理就是指,任务触发后不需要等待它们完成。 相反,Boost.Asio 会在任务完成时触发一个应用。 异步任务的主要优点在于,在等待任务完成时不需要阻塞应用程序,可以去执行其它任务。 异步

gongluck93的博客 3万+

【工具篇】万字长文拆解 Otter.ai:语音转文字领域的「瑞士军刀」是如何炼成的?(附保姆级教程)

但需要注意,2024年欧盟已出台《AI转录伦理指南》,要求所有录音需获得参与者明确授权。举个真实案例:某硅谷创业团队用Otter.ai记录产品评审会,系统自动标红争议点并生成待办事项,会议效率提升40%。AIGC技术原理、 实时转录解析、 定价策略分析、 语音算法拆解、 多平台兼容测试、 深度学习框架、 空间计算专利。——无论是跨国会议、课堂讲座还是深夜灵感,它都能实时生成带时间戳的文本记录,准确率高达95%。(此处建议插入Otter.ai会议转录动图,展示实时字幕生成效果)(数据来源:综合参考文献整理)

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1258

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

简单的聊天室服务器 基于Boost asio(1)--boost库

**最近学习了一些boost asio的知识,所以决定解读一下官方文档。继而编写一个简单的聊天服务器。 ** 在开始搞代码之前,得先弄清楚,这个玩意(boost asio)是干什么的。 Boost.Asio是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的C++库。 关于网络处理已经有很多解决方案,但是Boost.Asio是目前为止最优的方案。它在2005年就被包含进Boost,然后被大...

li7513499的博客 730

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Boost.Asio中buffer的使用详解

Boost.Asio中的buffer机制详解:buffer是网络数据传输的临时缓存区,Boost.Asio提供mutable_buffer(可写)和const_buffer(只读)两种核心类型,它们封装内存指针和长度。API通过BufferSequence概念支持分散/聚集I/O操作,允许一次操作多个缓冲区。asio::buffer()函数可自动将常见数据类型转换为符合BufferSequence的缓冲区对象。使用时需注意生命周期管理和类型安全,避免悬垂引用。这种设计实现了高效灵活的内存管理,是Boost.

qq_52318674的博客 1095

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Boost.Asio教程 0

Boost.Asio是一个用于网络和底层 I/O 编程事的跨平台 c + + 库,为开发人员提供一种一致的使用现代的 c + + 方法的异步模型。 概述 在 Boost.Asio,加上基本原理和设计信息中所包含的功能的概述。 使用 Boost.Asio 如何在您的应用程序中使用 Boost.Asio。包括在库依赖项和受支持的平台上的信息。 教程 介绍了使用 Boost.

xinqingwuji的博客 2272

boost::ASIO 读写

NO.1 ASIO 读操作大总结: A. Boos::asio::read 同步读方式 void client::read_data(char   * sourse  , int num )         {                 boost::asio::read( socket_own , boost::asio::buffer( sourse , num ) );

qq1987924的专栏 1万+

[Boost]用asio编写简单的socket通信程序

boost/asio库中封装了很多关于scoket的函数,当然,asio库还包含很多底层的库。 我们可以用socket编写一个基于UDP协议的黑框通讯程序。 要想使用asio里面的函数,大多都需要先创建一个io_service对象,然后通过这个serveice来构造不同的对象,所以第一步,我们得创建两个对象: boost::asio::io_service io_service; b

Zk 7095
上一篇: boost.any 介绍
下一篇: TCP客户端
Knowledgebase
博客等级 码龄3年 268粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Knowledgebase

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值