Bonjour
Je cherche à réduire le temps de détection d'une rupture de connexion réseau dans un de mes programmes sous linux.
Voila le schéma : j'ai un ensemble d'applications client-serveur et lorsque je quitte le serveur (proprement ou brutalement avec un CTRL-C) mon client détecte bien la rupture de connexion instantanément, sur un send ou un recv.
Par contre si ma rupture est provoquée par le débranchement du cable réseau les reliant (ou un élément dans la chaine ), alors le client ne détecte pas la rupture réseau avant un temps assez long ( entre 11 et 16 mn ce matin ).
J'ai tenté de modifier les valeurs tcp_keepalive_intvl tcp_keepalive_probes et tcp_keepalive_time du répertoire /proc ( echo xxx > variable ) et de relancer mon programme mais ça n'a aucune influence. Je n'ai pour le moment pas tenté de le faire via la fonction sysctl ( http://pwet.fr/man/linux/conventions/tcp ) mais je ne pense pas que cela change grand chose.
Surement parce que cela ne correspond pas à ce que je veux faire. En effet, les valeurs par défaut ne correspondent pas au comportement que j'ai eu : 7200s après une inactivé, 7 probes à intervalles de 75 sec , ce qui veut dire que par défaut, mon application couperait la connexion réseau au bout de 2h11mn ce qui n'est pas le cas.
Par conséquent, je tente de poser ma question ici, quelqu'un sait-il par quel appel système je peux modifier le timeout de la connexion tcp sur une rupture de cable réseau, et par quel appel système c'est détecté coté client ( au prochain send, ou au prochain recv ).
A savoir, apparemment sous windows le timeout est bien plus court ( 30sec me semble-t-il )
Je vous remercie d'avance