Dunque nuova situazione divertente.
Inserendo un if(ric==-1) break; quello che ottengo sono 2 cose:
1. Se metto un breakpoint all'interno del while, lui va avanti fino a quando conta vale 1000000 e poi esce (per colpa dell'if però non per colpa del while, quindi esattamente come prima).
Ovviamente all'uscita dal ciclo conta vale 1000000
2. Se metto un breakpoint non dentro al ciclo, ma subito dopo, per qualche motivo invece esce prima, quindi conta non vale 1000000, anzi spesso vale solo poche migliaia tipo 24000.
Ma ora mi chiedo: ma il breakpoint mica modifica il codice, è solo un'interruzione e poi si riprende da li....sembra quasi che per leggere tutto correttamente sta benedetta recv abbia bisogno di tempo...ma come è possibile essendo una funzione bloccante??