Salve a tutti!

Cerco di implementare una piccola applicazione client/server (servendomi del protocollo UDP) che al momento faccio girare in locale.

Secondo me tutto in teoria dovrebbe funzionare ma nella pratica.... per venirne a capo avrei una domanda da fare:

supponiamo che il client riceva un pacchetto attraverso la recvfrom(). Questa scriverà i dati nella locazione di memoria indicata ma...se dovesse arrivare un'altro pacchetto mentre il client è impegnato in questa scrittura, cosa accade? Si perde?

Il motivo di questa domanda è che, da quello che ho capito, ciò che accade sl mio codice è di ricevere il primo pacchetto, poi ne perde un pel pò, poi ne riceve correttamente un pò, poi ne perde ancora e continua così.
Tutto ciò non accade se rallento il server (ad esempio introducendo una sleep(1)) dopo ogni invio.

Scusate i termini estremamente generici della questione ma, visto che si tratta di "esperimenti" più che altro per capire il funzionamento delle cose non mi sembrava il caso di postare del codice che sembra non avere nessuno scopo