He creado mi servidor y cliente UDP con boost :: asio udp sockets. Todo se veía bien antes de comenzar a enviar más datagramas. Vienen correctamente de cliente a servidor. Pero, están unidos en mi buffer en un solo mensaje.Cómo dividir recibido con boost asio udp sockets datagramas unidos
utilizo
udp::socket::async_receive
con std::array<char, 1 <<18>
búfer
para realizar solicitudes asíncronas. Y recibir datos a través de devolución de llamada
void on_receive(const error_code& code, size_t bytes_transferred)
Si envío de datos con demasiada frecuencia (cada 10 milisegundos) Recibo varios datagramas simultáneamente en mi memoria intermedia con la devolución de llamada anteriormente. La pregunta es: ¿cómo por separado ellos? Nota: mis datagramas UDP tienen longitud variable. No quiero usar el encabezado adicional con el tamaño, porque hará que mi código sea inútil para los datagramas de terceros.
¿Podría mostrar su código? –
Use una función de devolución de llamada proporcionada por el usuario en su mensaje 'on_receive', que procesa todos los mensajes incluidos en el único paquete recibido. – Chad
Claro, se puede encontrar aquí: [udp2tcp_tunnel] (https://github.com/valery-l/udp2tcp_tunnel). Está en progreso, pero es un pequeño servidor de ping-pong (envía por TCP desde el cliente, recibiendo el mismo mensaje de prueba del servidor por UDP). Me parece que encontré el problema. Si envío varios búferes en ** secuencia de búfer ** por 'basic_datagram_socket :: async_send_to (buffer_sequence, handler)', vendrá como ** un ** datagrama (no ** un ** datagrama para ** cada búfer * *). –