Como descartar dados quando enviados com boost :: asio?

Estou escrevendo um código que lê e grava no dispositivo serial usandoboost::asio classe. No entanto, ao enviar várias seqüências entre programas, notei que no programa receptor os dados são lidos na ordem em que foram gravados na porta serial, e não como os dados são enviados do outro programa - Se eu começar a ler alguns segundos depois, não recebo os valores que estou enviando no momento, mas os que foram enviados anteriormente. Suponho que isso seja causado pela forma como estou configurando meuboost::asio::serial_port:

int main(int argc, char const *argv[]){

    int baud=atoi(argv[1]);
    std::string pty=argv[2];

    printf("Virtual device: %s\n",pty.data());
    printf("Baud rate: %d\n",baud);

    boost::asio::io_service io;
    boost::asio::serial_port port(io, pty);
    port.set_option(boost::asio::serial_port_base::baud_rate(baud));

    // counter that writes to serial port in 1s intervals
    int val=0;
    while (1){
        std::string data=std::to_string(val);
        data+='\n';
        std::cout << data;
        write(port,boost::asio::buffer(data.c_str(),data.size()));
        sleep(1); 
        val++;
        data.clear();
    }

    port.close(); 
    return 0;
}

Existe uma maneira de forçar o descarte de dados passados assim que um novo valor for enviado para a porta serial (que eu suponho que deve ser feita na parte write () do código)?

questionAnswers(1)

yourAnswerToTheQuestion