Recientemente comencé a trabajar con Boost Asio. Me di cuenta de que el receive method of a TCP socket acepta un message_flags como parámetro. Sin embargo, la documentación que encontré para message_flags solo dice que es un número entero sin especificar los valores válidos. ¿Cuáles son los valores que se pueden asignar a un message_flags y qué significan?Boost Asio message_flags
9
A
Respuesta
11
Busqué por un tiempo y finalmente traté de buscar en el código fuente de Boost. He encontrado esto en socket_base.hpp:
/// Bitmask type for flags that can be passed to send and receive operations.
typedef int message_flags;
#if defined(GENERATING_DOCUMENTATION)
/// Peek at incoming data without removing it from the input queue.
static const int message_peek = implementation_defined;
/// Process out-of-band data.
static const int message_out_of_band = implementation_defined;
/// Specify that the data should not be subject to routing.
static const int message_do_not_route = implementation_defined;
#else
BOOST_STATIC_CONSTANT(int,
message_peek = boost::asio::detail::message_peek);
BOOST_STATIC_CONSTANT(int,
message_out_of_band = boost::asio::detail::message_out_of_band);
BOOST_STATIC_CONSTANT(int,
message_do_not_route = boost::asio::detail::message_do_not_route);
#endif
base a esto, se ve como message_peek
, message_out_of_band
y message_do_not_route
son los valores posibles. Voy a intentar esto y ver si puedo hacer que funcionen.
0
Me encontré con el mismo problema y mi solución fue utilizar la sobrecarga que no toma el parámetro message_flags (http://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/basic_datagram_socket/send_to/overload1.html).
Lo malo es que si se quiere informar de errores de código de error que no puede usarlo (sobrecarga utiliza una excepción, y no toma ec param)
0
Cuestiones relacionadas
- 1. boost asio io_service.run()
- 2. ¿Quién usa Boost ASIO?
- 3. boost :: asio over SocketCAN
- 4. boost :: asio cleanly disconnecting
- 5. Interrupt boost :: asio synchronous read?
- 6. Pruebas unitarias y boost :: asio
- 7. Boost :: asio async_wait handler signature
- 8. boost :: asio, hilos y sincronización
- 9. boost :: Asio socket async_ * strand
- 10. Boost :: Asio: io_service.run() vs poll() o cómo puedo integrar boost :: asio en mainloop
- 11. Boost asio io_service dispatch vs post
- 12. Boost :: Asio operaciones de lectura/escritura
- 13. boost :: Asio operaciones y recursos asíncronos
- 14. boost :: asio async_accept Rechazar una conexión
- 15. Boost Asio serial_port - necesito ayuda con io
- 16. Boost Asio multiproceso TCP Servidor síncrono
- 17. boost :: asio threadpool vs. io_service_per_cpu design
- 18. C++, boost asio, recibir serie terminada nula
- 19. Boost ASIO: SSL handshake() nunca termina
- 20. Boost Asio en Linux sin usar Epoll
- 21. Enviando mensajes de Protobuf con boost :: asio
- 22. boost :: asio :: ip :: multicast :: join_group no funciona
- 23. boost :: asio :: ip :: tcp :: socket está conectado?
- 24. Boost asio ConstBufferSequence - Plantillas de C++
- 25. Usando boost :: asio :: async_read con stdin?
- 26. La mejor documentación para Boost: asio?
- 27. boost :: asio, error de lectura asíncrona
- 28. ¿Cómo uso solo Asio de Boost Library?
- 29. Boost Asio tcp :: resolver: servicio no encontrado
- 30. ¿Hay marcos web para Boost :: asio?
¿Qué le parece pasar 0 como bandera? ¿No te dará el comportamiento deseado? – russoue
Usé 0 y me pareció bien –