détail : si le select retourne > 0, donc qu'une ou plusieurs sockets a déclenché le select, il faut tester chacun des descripteurs pour savoir quel est l'état (lecture, écriture, exception), et ce avec la macro FD_ISSET(Socket, descripteur).
par exemple dans ton code :
Code :
- if (retval)
- {
- if ((FD_ISSET(socketClient, &set_read)))
- ; // données pretes a etre recues
- if ((FD_ISSET(socketClient, &set_write)))
- ; // données pretes a etre écrites
- if ((FD_ISSET(socketClient, &set_exc)))
- ; // exception
- }
|
sinon ton code a l'air bon, je vois pas ce qui pourrait faire que ca marche pas. essaye plusieurs trucs genre virer les descripteurs en écriture et exception, regarde du coté du 1er paramètre du select (le man de ta machine dis quoi a son propos ?), et teste bien sans select pour voir si tu reçois bien des données...
sinon teste mieux le retour du select : 0 pour timeout, SOCKET_ERROR pour une erreur, ou un nb égal au nb de sockets prêtes et contenues dans les descripteurs.