Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4146 connectés 

  FORUM HardWare.fr
  Programmation
  C

  tcp timeouts

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

tcp timeouts

n°2074280
xilebo
noone
Posté le 06-05-2011 à 12:05:47  profilanswer
 

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  :jap:

mood
Publicité
Posté le 06-05-2011 à 12:05:47  profilanswer
 

n°2074291
gilou
Modérateur
Modosaurus Rex
Posté le 06-05-2011 à 12:26:00  profilanswer
 

Ton programme ne peut il envoyer un ping avec une granularité qui te convienne, pour détecter une rupture de connexion?
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻
n°2074311
xilebo
noone
Posté le 06-05-2011 à 13:32:34  profilanswer
 

gilou a écrit :

Ton programme ne peut il envoyer un ping avec une granularité qui te convienne, pour détecter une rupture de connexion?
A+,


 
 
Salut :)
 
C'est ce que mon programme fait déjà car la détection de rupture se fait facilement sur un send. Mais le send de ce ping ne renvoie pas d'erreur ( code de retour = taille du buffer envoyé ) lors d'une rupture de connexion en débranchant le cable. Seul l'attente d'un délai suffisant permet d'avoir le code d'erreur de la part de ce ping.
 
La granularité choisie actuellement est de 1 sec.
 

n°2074367
gilou
Modérateur
Modosaurus Rex
Posté le 06-05-2011 à 16:16:31  profilanswer
 

Par programme, tu dois bien pouvoir mettre un timeout de 1s à un ping (ie un paquet ECHO ICMP), non?
Si tu as rien reçu au bout de 1s, tu fermes la socket et tu considères la machine comme inaccessible.
A+,


---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  tcp timeouts

 

Sujets relatifs
[PERL] Timeouts et redirection de STDOUT et STDERR 
Plus de sujets relatifs à : tcp timeouts


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)