Temo che l'esempio del professore non combaci fino in fondo... provo ad analizzarlo, così mi capisco anch'io.
Arduino deve periodicamente inviare dei report al server. La risposta del server è ok, ricevuto.
(Il professore spiega, lo studente risponde sì, ho capito)
Da server poi devo in ogni momento poterlo chiamare per fare una domanda o dare un comando.
(lo studente comanda, il professore obbedisce (siamo proprio come nel mondo reale)) + risponde con un ok, eseguito.
Vista da fuori la sequenza è
--> messaggio A (report)
<-- messaggio B (ok)
--> messaggio C (report)
<-- messaggio D (ok)
<-- messaggio E (istruzione)
--> messaggio F (ok)
Il problema è che il sistema non ha memoria, riguarda la sequenza, questa volta senza spiegazione:
--> messaggio A
<-- messaggio B
--> messaggio C
<-- messaggio D
<-- messaggio E
--> messaggio F
Quando arrivano il messaggio D o E so solo che ho un messaggio in entrata.
Per capire se è un report o un ok oppure un'istruzione o un ok (e ho evitato casi come A,C,D,B... la latenza è subdola) o li ricevo per intero e li analizzo (dispendioso e come già detto la logica è diversa) o riesco a capire l'id di partenza che B, D e F si portano dietro (e so che in teoria è fattibile perché "sotto" lo usa).