我正在使用boost::asio::ip::udp::socket
进行通信。我使用socket.receive_from(...)
来接收来自客户端的消息。这个现在工作正常,但我希望能够关闭我的服务器。现在我在while循环中调用receive_from
,这取决于我可以设置的bool条件。但是,如果我不能强制线程定期或在某次调用时退出receive_from
,那么这就没用了。
这甚至可能吗?我试过谷歌搜索,但没有找到明确的答案。我尝试过使用socket.cancel()
,但这似乎没有效果。
我是否以正确的方式使用套接字?
答案 0 :(得分:2)
使用同步receive_from
方法没有好办法做你想做的事。如果您希望超时和可取消,则应使用异步async_receive_from
方法。 Boost.Asio trac网站上有一个ticket来描述这个。
我最近回答了similar question你可能会觉得有用。