使用boost :: asio来监听两个套接字

时间:2011-12-21 09:50:56

标签: c++ boost-asio

如何使用boost :: asio同时收听两个套接字?我认为不应该有两个io_service。我应该解决两个接受者的两个查询来听两个sokets吗?假设两个插座是:

127.0.0.1:7001
127.0.0.2:7001

1 个答案:

答案 0 :(得分:4)

使用一个asio io_service是正确的。 (你当然可以使用你想要的数量,但是使用一个更有效率,因为它在一个线程中阻塞你避免不必要的上下文切换。另外,你可以从多个线程调用io_service::run您希望使用多个处理器。)

acceptorsocket封装在一个类中,如许多asio示例所示,并通过引用将io_service传递给类构造函数。然后,您可以bind将接受者listen转到所需的地址async_accept,然后在您调用的类方法中调用{{1}}。