//// server.cpp// ~~~~~~~~~~//// Copyright (c) 2003-2016 Christopher M. Kohlhoff (chris at kohlhoff dot com)//// Distributed under the Boost Software License, Version 1.0. (See accompanying// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//#include<ctime>#include<iostream>#include<string>#include<boost/bind.hpp>#include<boost/shared_ptr.hpp>#include<boost/enable_shared_from_this.hpp>#include<boost/asio.hpp>usingboost::asio::ip::tcp;std::stringmake_daytime_string(){usingnamespacestd;// For time_t, time and ctime;time_tnow=time(0);returnctime(&now);}classtcp_connection:publicboost::enable_shared_from_this<tcp_connection>{public:typedefboost::shared_ptr<tcp_connection>pointer;staticpointercreate(boost::asio::io_service&io_service){returnpointer(newtcp_connection(io_service));}tcp::socket&socket(){returnsocket_;}voidstart(){message_=make_daytime_string();boost::asio::async_write(socket_,boost::asio::buffer(message_),boost::bind(&tcp_connection::handle_write,shared_from_this(),boost::asio::placeholders::error,boost::asio::placeholders::bytes_transferred));}private:tcp_connection(boost::asio::io_service&io_service):socket_(io_service){}voidhandle_write(constboost::system::error_code&/*error*/,size_t/*bytes_transferred*/){}tcp::socketsocket_;std::stringmessage_;};classtcp_server{public:tcp_server(boost::asio::io_service&io_service):acceptor_(io_service,tcp::endpoint(tcp::v4(),13)){start_accept();}private:voidstart_accept(){tcp_connection::pointernew_connection=tcp_connection::create(acceptor_.get_io_service());acceptor_.async_accept(new_connection->socket(),boost::bind(&tcp_server::handle_accept,this,new_connection,boost::asio::placeholders::error));}voidhandle_accept(tcp_connection::pointernew_connection,constboost::system::error_code&error){if(!error){new_connection->start();}start_accept();}tcp::acceptoracceptor_;};intmain(){try{boost::asio::io_serviceio_service;tcp_serverserver(io_service);io_service.run();}catch(std::exception&e){std::cerr<<e.what()<<std::endl;}return0;}
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.