boost.asio的异步echo服务器端的std::bind实现

本文介绍如何使用C++11标准库中的std::bind实现异步Echo服务器,通过boost.asio库进行网络通信,包括服务器端的Session类处理读写操作,以及智能指针管理生命周期。

C++11以来,提供了不少遍历,原来在boost库中的一些工具,也进入到了C++标准库中。boost作为“准”标准库也C++尽可能需要掌握的知识和技能。
现在采用std::bind方式实现异步echo服务器端,后面会采用lambda表达式重新实现一遍,比较二者的差异,采用自己喜欢的方法就可以了。
完整代码:

// Asynchronous echo server.

#include <array>
#include <functional>
#include <iostream>
#include <memory>
#include <string>

#include "boost/asio.hpp"
#include "boost/core/ignore_unused.hpp"

using boost::asio::ip::tcp;

enum {
   
    BUF_SIZE = 1024 };

class Session : public std::enable_shared_from_this<Session> {
   
   
public:
	Session(tcp::socket socket) : socket_(std::move(socket)) {
   
   
	}

	void Start() {
   
   
		DoRead();
	}

private:
	void DoRead() {
   
   
		socket_.async_read_some(boost::asio::buffer(buffer_),
			std::bind(&Session::OnRead, shared_from_this(),
				std::pl
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值