boost asio
来源:互联网 发布:尼尔机械纪元a卡优化 编辑:程序博客网 时间:2024/05/16 15:13
#include <iostream>#include <memory>#include <boost/asio.hpp>#include <boost/array.hpp>#include <boost/bind.hpp>#include <boost/system/system_error.hpp>using namespace boost::asio::ip;class Session : public std::enable_shared_from_this<Session>{public:Session(boost::asio::io_service &ios) : socket_(ios){}tcp::socket &getSocket(){return socket_;}void startRead(){auto self(shared_from_this());socket_.async_read_some(boost::asio::buffer(buffer_),[this, self](const boost::system::error_code &error,size_t bytes_transferred){if (!error){startWrite(bytes_transferred);}});}void startWrite(size_t bytes_transferred){auto self(shared_from_this());boost::asio::async_write(socket_, boost::asio::buffer(&buffer_[0], bytes_transferred),[this, self](const boost::system::error_code &error, size_t bytes_transferred){if (!error){startRead();}});}private:tcp::socket socket_;enum { kMaxLength = 4096 };boost::array<char, kMaxLength> buffer_{};};class Server{public:Server(boost::asio::io_service &ios, unsigned short port) : io_service_(ios),acceptor_(io_service_, tcp::endpoint(tcp::v4(), port)){startAccept();}void startAccept(){std::shared_ptr<Session> session_ptr = std::make_shared<Session>(io_service_);acceptor_.async_accept(session_ptr->getSocket(),[this, session_ptr](const boost::system::error_code &error){if (!error){session_ptr->startRead();}startAccept();});}private:boost::asio::io_service &io_service_;tcp::acceptor acceptor_;};int main(){try{boost::asio::io_service ios;Server server(ios, 8888);ios.run();}catch (const std::exception& e){std::cerr << "Exception: " << e.what() << "\n";}return 0;}
0 0
- Boost Asio
- boost asio
- Boost.asio
- boost asio
- boost asio
- boost.asio
- Boost.Asio
- boost.asio
- boost asio
- BOOST::ASIO
- boost asio
- boost asio
- boost asio
- Boost asio
- boost asio
- Boost asio.
- boost.asio
- [Boost.asio] boost asio 简单示例
- nyoj--1185--最大最小值(线段树)
- 【串项目4-字符串加密——第8周】
- 【C语言】求解最大公约数
- CSS3的文字阴影—Text-Shadow
- 20151027——关于“问问题”这件事
- boost asio
- IOS网络笔记--地图内容3(点击获取当前地址的具体坐标)
- Displacement Map
- 软件工程——结合软考题
- 学会用core dump调试程序错误(转)
- HBase初体验
- linux vi(vim)常用命令汇总(转)
- Linux 下查看mac地址
- linux ls和 ll 命令