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

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

被折叠的 条评论
为什么被折叠?



