J'ai un programme en C++, en utilisant l'API socket standard, fonctionnant sous Ubuntu 7.04, qui maintient une socket ouverte sur un serveur. Mon système vit derrière un routeur. Je veux comprendre combien de temps cela peut prendre pour obtenir une erreur de socket une fois que mon programme commence à envoyer APRÈS que le routeur soit coupé du réseau.Comment puis-je déterminer le temps maximum nécessaire à la mort du socket TCP en raison d'une déconnexion réseau intermédiaire?
En d'autres termes, mon programme peut rester inactif (en attente de l'utilisateur). Le routeur est déconnecté d'Internet, puis mon programme essaie de communiquer sur ce socket.
De toute évidence, il ne va pas savoir rapidement, car TCP est très habile à maintenir une socket en vie dans des conditions de réseau défavorables. Cela provoque TCP à réessayer beaucoup de fois, de nombreuses façons, avant d'abandonner finalement.
J'ai besoin d'établir une sorte de «pire cas» que je peux donner au groupe de contrôle qualité (et au client), afin qu'ils puissent tester que mon code passe dans un état hors ligne approprié. (Pour référence, mon programme fait partie d'un système de paiement à la pompe pour les stations-service, et le serveur est le système qui autorise les transactions de paiement.Il est tout à fait possible que la station soit coupée du réseau pour une variété de raisons, et le client veut juste savoir à quoi s'attendre).
EDIT: Je n'étais pas clair. Il n'y a pas d'être humain qui attend sur cette chose, c'est juste pour une notation de back office du système hors ligne. Quand l'auteur ne revient pas dans 30 secondes, la transaction est terminée et les gens partent faire d'autres choses.
EDIT: Je suis arrivé à la conclusion que la question n'est pas vraiment responsable dans le cas général. Le nombre de facteurs impliqués dans la détermination de la durée d'une erreur de connexion TCP due à une panne en aval dépend trop de l'équipement exact et de l'échec pour qu'il y ait une réponse simple.
J'ai édité ma question: Il n'y a pas d'attente humaine là-dessus, la transaction est rapide et agréable. –