Увеличьте asio udp waitForReadyRead - PullRequest
       23

Увеличьте asio udp waitForReadyRead

2 голосов
/ 13 ноября 2009

Я пытаюсь реализовать функцию с использованием boost asio udpSocket, которая ждет, пока данные не будут готовы для чтения, или ждет, пока не истечет время ожидания.

используя asyc_read и async_wait, я могу сделать что-то подобное, но я должен прочитать данные. Я хотел бы сделать то же самое без чтения данных

Это позволило бы намного проще использовать класс udpSocket во многих ситуациях, но, учитывая интерфейс udpSocket, я не могу понять, как реализовать такую ​​функцию без ручной буферизации данных и переписывания функции sync_read

лучший, дд

1 Ответ

2 голосов
/ 17 ноября 2009

Попробуйте позвонить async_receive ( ссылка ), используя опцию message_peek ( ссылка ). Таким образом, вы можете настроить чтение по тайм-ауту так, как вам нужно, но без извлечения данных из буфера приема.

Для получения более подробной информации прочитайте MSDN-описание MSG_PEEK (которое является специфичной для Windows реализацией message_peek ... вам нужно прокрутить вниз до конца статьи). Это должно дать вам хорошее представление о том, как это работает более подробно, хотя вы должны обратиться к документации вашей системы, чтобы быть абсолютно уверенным.

...