Už si odpoviem sám. Select nenastavuje príznak že socket mal udalosť ale nuluje nastavený ak na ňom nie je udalosť. Podľa tohoto článku to funguje ak sledujeme len jeden socket v cykle, ak ich chceme sledovať napr. 10 musíme vždy pred volaním select všetky nastaviť s FD_SET.