2016-08-30 50 views
2

我正在编写多线程TCP服务器,其中基于应用程序设计,我需要为每个线程使用io_service多线程。Boost Asio将接受的套接字从一个io_service传输到另一个io_service

有了这种设计,我需要接受来自一个Thread/io_service的连接进行身份验证过程(基于应用程序逻辑),然后将接受的连接传输到另一个Thread/io_service以开始从经过身份验证的连接读取长数据。因此问题是how transfer accepted connection from one io_service into another one

这是否有任何标准功能?

谢谢

回答

1

去基于一般的想法的答案。伪代码为:

create_io_service_pool(...); 
tcp::acceptor tcp_acceptor(accept_io_service, tcp::endpoint(tcp::v4(), 6069)); 
while (true) { 
    auto csocket = tcp::socket(get_io_service_from_pool()); 
    tcp_acceptor.accept(csocket); 
    /// Any async operation afterwords on csocket would be handled by the 
    /// io_service it got from `get_io_service_from_pool` function 
    /// which you can design as you wish..may be round-robin one for simplicity 
} 

我只是希望这是你在找什么。

相关问题