0

我正在尝试使用 boost::asio 编写我自己的异步网络客户端。我在可用示例中观察到的一件事是不清楚是创建单个 io_service、解析器和查询对象,还是为我创建的每个连接创建这些对象的新实例。

我有一个客户端,它只会联系特定的服务器(唯一的 ip 和主机),但每天会这样做 100 次。

我计划拥有自己的网络类,并且在类本身中,我在构建对象时设置了 io_service、解析器、查询和套接字变量。

myclient::myclient() : io_service_(), resolver_(io_service_),
  query_(tcp::v4(), host_, port_), socket_(io_service_) 
{
}

//...

resolver.async_resolve_();
io_service_.reset();
io_service_.run_one();

这看起来好吗?

4

1 回答 1

1

对于上面描述的进程,您应该尝试将自己限制为一个 io_service io_service 类是线程安全的,因此可以同时被多个线程使用来分派工作。快速阅读io_service类文档,底部有一些使用示例。

还可以查看聊天客户端示例,并注意如何在主函数中创建 io_service,然后通过引用传递给 chat_client 类。

于 2012-05-01T13:03:08.227 回答