使用Boost Asio库打开多个端口

SKR*_*SKR 3 c++ boost boost-asio

我是Boost Asio库的新手,我的要求是构建一个服务器,它应该异步监听600个不同的端口(TCP通信).有人可以建议我使用Boost Asio实现这一目标.我尝试过使用Boost Asio文档提供的echo服务器示例,但实际上并不太了解boost :: asio :: io_service io_service;

using namespace std; // For atoi.
for(long port=50000;port<=50600;port++)
{
    server s(io_service, port);
    io_service.run();
}
Run Code Online (Sandbox Code Playgroud)

有人可以对此有所了解吗?

spe*_*rcw 5

io_service负责处理分配给它的所有I/O; 您不需要为每个端口创建单独的一个.对于您要执行的操作,您需要创建600个单独的服务器实例然后调用io_service.run().

vector<shared_ptr<server> > servers;
for (uint16_t port = 50000; port != 50600; ++port)
{
    servers.push_back(shared_ptr<server>(new server(io_service, port)));
}
io_service.run();
Run Code Online (Sandbox Code Playgroud)