je ne suis pas serveur, je suis client. J'ai n connexions indépendantes (représentée chacune par un thread) vers n appareils en tant que client.
Aucun problème sur le process.
Par contre mon erreur énorme de débutant, c'est d'avoir oublié UNE initialisation, celle de ma variable contenant mon socket. Sous windows, elle est bien initialisée à INVALID_SOCKET (-1) mais pas sous linux. Ce qui fait qu'elle vaut 0 par défaut sous linux (debug et release, bizarre).
Or, avant de recréer chaque connexion, j'appelle une fonction qui ferme proprement ma socket en testant si la valeur est invalide. La valeur étant 0, elle n'est pas invalide, et donc close(0) -> creation de socket sur 0, thread suivant : close(0) -> creation de socket sur 0 ... etc ... Au final, seule la derniere socket sur 0 existe, les n - 1 précédentes sont fermées, et stdin aussi accessoirement.
Désolé du dérangement
(accessoirement, cette minuscule erreur tourne depuis 2 ans chez 3 ou 4 clients, mais n'est jamais survenue car c'est sur des anciennes versions de machine qui sont plus lentes d'exécution, le probleme ne survenant pas).