2009-11-13 4 views
2

J'essaie d'implémenter une fonction en utilisant boost asio udpSocket, qui attend que les données soient prêtes à être lues, ou qui attend qu'un délai expire. En utilisant asyc_read et async_wait, je peux faire quelque chose de similaire, mais je dois lire les données. Je voudrais faire la même chose sans lire les donnéesBoost asio udp waitForReadyRead

Cela permettrait une utilisation beaucoup plus facile de la classe udpSocket dans de nombreuses situations, mais compte tenu de la l'interface udpSocket, je ne peux pas comprendre comment mettre en œuvre un tel fonction, sans mise en mémoire tampon manuellement les données, et la réécriture d'une fonction sync_read

mieux, Dd

Répondre

2

Essayez d'appeler async_receive (link) en utilisant l'option message_peek (link). De cette façon, vous pouvez définir une lecture liée au délai d'attente comme vous le vouliez, mais sans extraire de données du tampon de réception.

Pour plus de détails, lisez le MSDN description of MSG_PEEK (qui est l'implémentation spécifique à Windows de message_peek ... vous devez faire défiler vers le bas de l'article). Cela devrait vous donner une bonne idée de la façon dont cela fonctionne plus en détail, même si vous devriez consulter la documentation de votre système pour être absolument certain.

Questions connexes