//////////////////server.h//////////////////////// #ifndef SERVER_H #define SERVER_H #ifdef WIN32 #define _WIN32_WINNT 0x0501 #endif #include #include #include class Client; typedef boost::shared_ptr ClientPtr; typedef boost::shared_ptr SocketPtr; typedef std::map ClientsMap; class Server { public: Server(); ~Server(); void start(); void startAccept(); ClientsMap::const_iterator begin() { return m_clients.begin(); } ClientsMap::const_iterator end() { return m_clients.end(); } int size() { return m_clients.size(); } private: ClientsMap m_clients; bool accept_connections; boost::asio::io_service service; boost::asio::ip::tcp::acceptor* m_acceptor; }; #endif /////////////////////server.cpp////////////////////////// #include "server.h" #include "defines.h" #include "client.h" Server::Server() { service.run(); } Server::~Server() { m_clients.clear(); } void Server::start() { m_acceptor = new boost::asio::ip::tcp::acceptor(service, boost::asio::ip::tcp::endpoint( boost::asio::ip::tcp::v4(), SERVER_PORT)); } void Server::startAccept() { SocketPtr s(new boost::asio::ip::tcp::socket(service)); m_acceptor->accept(*s); ClientPtr ptr(new Client(s)); m_clients[s] = ptr; }