姬長信(Redy)

c – BOOST ASIO – 如何编写控制台服务器


我必须编写异步TCP服务器.
TCP服务器必须由控制台管理
(例如:删除客户端,显示所有连接客户端的列表,等等.)

问题是:我如何附加(或写入)控制台,它可以调用以上功能.
这个控制台必须是客户端?我应该将此控制台客户端作为一个单独的线程运行吗?

我已经阅读了很多教程,但我找不到解决问题的方法.

ServerTCP代码

class ServerTCP
{
public:
   ServerTCP(boost::asio::io_service& A_ioService, unsigned short A_uPortNumber = 13)
      : m_tcpAcceptor(A_ioService, tcp::endpoint(tcp::v4(), A_uPortNumber)), m_ioService (A_ioService)
   {
      start();
   }
private:

   void start()
   {
      ClientSessionPtr spClient(new ClientSession(m_tcpAcceptor.io_service(), m_connectedClients));

      m_tcpAcceptor.async_accept(spClient->getSocket(), 
                                 boost::bind(&ServerTCP::handleAccept, this, spClient, 
                                 boost::asio::placeholders::error));

   }
   void handleAccept(ClientSessionPtr A_spNewClient,  const boost::system::error_code& A_nError)
   {
      if ( !A_nError )
      {
         A_spNewClient->start();
         start();
      }
   }



   boost::asio::io_service& m_ioService;
   tcp::acceptor            m_tcpAcceptor;
   Clients                  m_connectedClients;
};

主功能:

   try
   {
      boost::asio::io_service ioService;

      ServerTCP server(ioService);
      ioService.run();  
   }
   catch (std::exception& e)
   {
      std::cerr 

你好萨姆.谢谢您的回复.你能这么善良并向我展示一些代码或一些涉及这个问题的例子的链接吗?
可能,我不能正确理解“……单线程服务器…”

事实上在我想管理服务器操作的“控制台”中,我需要像下面这样的smt:

main()

cout