Bonjour,
J'ai besoin de developper une application serveur sous windows qui envoie l'état d'un matériel toute les 150 msec à des clients distants.
J'ai fait une petite appli winsock2. Je crée un socket d'écoute qui crée un socket client lorsqu'un client demande la connection. Le serveur crée un thread client qui tourne en boucle pour lire le socket client (socket non bloquant).
Lorsque le thread client recoit une demande du client distant (16 octets), il renvoie l'état du matériel (environ 700 octets). Ceci se produit environ toutes les 150 msec.
Dès que j'ai deux clients connectés, mon serveur me bouffe presque toute la puissance machine (un intel dual core 3GHz !), les autres programmes sur la machine rament... J'ai testé avec et sans l'option TCP_NODELAY, ca change la réactivité du système, mais pas le fait qu'il est gourmand en resources processeur.
Qu'est ce que j'ai fait qui vous semble incorrect ? Le principe du polling sur le socket client est il en cause ? J'ai aussi essayé avec un socket bloquant, même chose.
Merci
Olivier
Partager