Quote:
Originariamente inviato da WarDuck
Questo è inevitabile, a meno di non usare socket non bloccanti.
Se ti aspetti di leggere 4 bytes, dovrai per forza aspettare che arrivino  .
|
QUel problema l'ho risolto con gli stati
3 stati :
stato 0 -> attesa comando
stato 1 -> attesa lunghezza dati
stato 2 -> attesa dato
Ogni client ha una struttura e in essa è presente una variabile stato ultimo dato letto e un buffer, e da uno stato a l'altro ci va solo quando ha finito di fare la lettura. Così nel frattempo che il determinato socket non ha i dati disponibile la select riprende il controllo e può gestire le altre connessioni.
Mi manca di capire se ho gestito in maniera corretta i buffer. Che in locale è difficile capirlo