Boost :: asio udp socket - 我应该如何使用API​​来取消读取?

时间:2011-01-23 17:19:31

标签: c++ sockets udp boost-asio

我正在使用boost::asio::ip::udp::socket进行通信。我使用socket.receive_from(...)来接收来自客户端的消息。这个现在工作正常,但我希望能够关闭我的服务器。现在我在while循环中调用receive_from,这取决于我可以设置的bool条件。但是,如果我不能强制线程定期或在某次调用时退出receive_from,那么这就没用了。

这甚至可能吗?我试过谷歌搜索,但没有找到明确的答案。我尝试过使用socket.cancel(),但这似乎没有效果。

我是否以正确的方式使用套接字?

1 个答案:

答案 0 :(得分:2)

使用同步receive_from方法没有好办法做你想做的事。如果您希望超时和可取消,则应使用异步async_receive_from方法。 Boost.Asio trac网站上有一个ticket来描述这个。

我最近回答了similar question你可能会觉得有用。