while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
FD_ZERO(&set);
FD_SET(sd,&set);
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
fonctionne très bien, maisirritant select() comportement c
FD_ZERO(&set);
FD_SET(sd,&set);
while (xxx) {
timeout.tv_sec=TIMEOUT;
timeout.tv_usec=0;
switch (select(FD_SETSIZE,&set,NULL,NULL,&timeout))
xxxxx
}
ne fonctionne pas. Cela fonctionne la première fois, mais la prochaine fois qu'il parcourt la boucle while, il obtient un timeout même si le socket sd reçoit des données. Il me semble être un gaspillage de ressources à devoir vider et remplir à chaque fois.
Quelqu'un a une bonne explication pourquoi c'est, et même mieux, peut-être une suggestion pour l'éviter?
Je pense qu'une partie du code que vous avez retiré peut être important pour comprendre pourquoi cela fonctionne comme il est. – SoapBox