Boost :: asio udp socket - как мне использовать API, чтобы разрешить отмену чтения? - PullRequest
1 голос
/ 23 января 2011

Я использую boost::asio::ip::udp::socket для общения. Я использую socket.receive_from(...) для получения сообщений от клиентов. Пока это работает нормально, но я хочу иметь возможность выключить мой сервер. Прямо сейчас я звоню receive_from в цикле while, который зависит от условия bool, которое я могу установить. Однако это довольно бесполезно, если я не могу заставить поток выходить receive_from через равные промежутки времени или при определенном вызове.

Это вообще возможно? Я попробовал поискать в Google, но не нашел четкого ответа. Я попытался использовать socket.cancel(), но это, похоже, не имеет никакого эффекта.

Правильно ли я использую розетку?

1 Ответ

2 голосов
/ 24 января 2011

Нет хорошего способа сделать то, что вы хотите, используя синхронный метод receive_from. Вам следует использовать асинхронный метод async_receive_from, если вы хотите тайм-ауты и возможность отмены. На сайте Boost.Asio trac есть билет , описывающий это.

Я недавно ответил на похожий вопрос , который вы также можете найти полезным.

...