boost asio 同步阻塞

来源:互联网 发布:广联达弱电预算软件 编辑:程序博客网 时间:2024/05/07 22:41
#include <array>#include <iostream>#include <boost/bind.hpp>#include <boost/smart_ptr.hpp>#include <boost/asio.hpp>#include <boost/thread.hpp>#include <boost/system/system_error.hpp>#include <boost/array.hpp>//using namespace boost::asio;const int max_length = 1024;using Socket = boost::asio::ip::tcp::socket;using SocketPtr = boost::shared_ptr<Socket>;void rw_handler(SocketPtr sock){try{for (;;){boost::array<char, max_length> data_buffer;boost::system::error_code error;size_t bytes_transferred = sock->read_some(boost::asio::buffer(data_buffer), error);if (error == boost::asio::error::eof){break;}else if (error){throw boost::system::system_error(error);}boost::asio::write(*sock, boost::asio::buffer(data_buffer, bytes_transferred));}}catch (std::exception &e){std::cerr << e.what() << "\n";}}void server(boost::asio::io_service &ios){boost::asio::ip::tcp::endpoint end_point(boost::asio::ip::tcp::v4(), 8888);boost::asio::ip::tcp::acceptor tcp_accceptor(ios, end_point);for (;;){SocketPtr sock(new Socket(ios));tcp_accceptor.accept(*sock);boost::thread(&rw_handler, sock).detach();}}int main(){boost::asio::io_service ios;server(ios);return 0;}

0 0
原创粉丝点击