2011-01-23 18 views
1

我正在使用boost::asio::ip::udp::socket进行通信。我使用socket.receive_from(...)来接收来自客户的消息。目前这工作正常,但我希望能够关闭我的服务器。现在我在while循环中调用receive_from,这取决于我可以设置的布尔条件。但是,如果我不能强制线程定期或在某个呼叫中退出receive_from,这是非常没用的。Boost :: asio udp套接字 - 我应该如何使用API​​来允许取消读取?

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

我是否以正确的方式使用插座?

回答

2

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

最近我回答了一个similar question,您可能也会觉得有用。

+0

谢谢!确认是我所需要的。希望我能避免额外的复杂性。 – Max 2011-01-24 12:09:12

相关问题