boost::asio学习之[三 .2]异步tcp service
2014-04-13 21:41
411 查看
#pragma once #include <ctime> #include <boost/bind.hpp> #include<boost/enable_shared_from_this.hpp> #include <boost/asio.hpp> namespace AsyService { using namespace boost::asio::ip; class tcp_connection : public boost::enable_shared_from_this<tcp_connection> { public: typedef boost::shared_ptr<tcp_connection> pointer; static pointer create(boost::asio::io_service& io) { return pointer(new tcp_connection(io)); } void start() { time_t now = std::time(0); message_ = std::ctime(&now); boost::asio::async_write(socket_, boost::asio::buffer(message_), boost::bind(&tcp_connection::hand_write, shared_from_this(), boost::asio::placeholders::error)); } tcp::socket& socket() { return socket_; } private: tcp_connection(boost::asio::io_service& io) :socket_(io) { } void hand_write(const boost::system::error_code& error) { if (!error) { } else { } } private: tcp::socket socket_; std::string message_; }; class tcp_server { public: tcp_server(boost::asio::io_service& io) :acceptor_(io, tcp::endpoint(tcp::v4(), 6688)) { start_accept(); } void start_accept() { tcp_connection::pointer new_conn = tcp_connection::create(acceptor_.get_io_service()); acceptor_.async_accept(new_conn->socket(), boost::bind(&tcp_server::hand_accept, this, new_conn, boost::asio::placeholders::error)); } private: void hand_accept(tcp_connection::pointer new_conn, const boost::system::error_code& error) { if (!error) { new_conn->start(); } start_accept(); } private: tcp::acceptor acceptor_; }; void asy_service() { try { boost::asio::io_service io; tcp_server server(io); io.run(); } catch (std::exception& e) { std::cout << e.what() << std::endl; } } }
相关文章推荐
- Boost.Asio学习之异步echo服务器实现
- boost_asio学习笔记[2] - 客户端异步通讯
- boost::asio学习之[四]udp client server 异步server
- boost-asio学习2——同步、异步socket处理
- boost::asio学习 异步方式
- boost-asio学习1——定时器(同步、异步)
- asio学习3: 异步tcp服务器端(datetime)
- boost asio io_service学习笔记
- 谈谈boost.asio的异步发送
- boost asio 异步实现tcp通讯
- boost::asio学习之[三]同步service,client
- boost::asio学习之[六]简单聊天程序
- boost::asio异步模式的C/S客户端源码实现
- boost:asio的同步方式和异步方式
- Boost.Asio C++ 网络编程之九:基于TCP的异步客户端
- 深入Boost.asio的异步Tcp通信的server、client,可用来当程序骨架。
- Boost.Asio学习之总结
- boost asio 异步实现tcp通讯
- Boost Asio 异步TCP服务器框架
- boost::asio学习 - 常用方法总结