Déco câble réseau

CyberYul Messages postés 2 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 7 mars 2005 - 4 mars 2005 à 13:12
CyberYul Messages postés 2 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 7 mars 2005 - 7 mars 2005 à 08:43
salut,



J ai développé une appli qui fait office de serveur. Par contre
j'utilise une librairie pour toute la partie communication (socket....).

Cette librairie possède une fonction qui me permet de savoir si la session de communication est ouverte.

C est elle qui me pose problème. Si je déco le câble réseau, cette
fonction ne le détecte pas immédiatemment (un temps entre 30sec et 3
minutes) pour le détecter.



De meme pour la fonction d'envoi de message: leur fonction me renvoie
que le message a bien été envoyé alors quel le cable réseau est déco.
Il faut envoyer plusieurs messages pour que la perte du cable
soit déco.



J ai envoyé un mail à la société qui a développé cette librairie...je suis en attente de leur réponse.

Un problème est que le client ne m'envoie un message de présence que
toutes les 5 minutes. Dans ces 5 minutes je vais peut être n'envoyé que
3 messages. Mais comme je vous ai dit des messages sont perdus si je
retire le cable réseau. Il me faut un autre moyen de détecter
immédiatement qu'il n'y a plus de connexion réseau.





Ca fait qq jours que j'essaye de contourner ce problème en détectant
moi meme la perte du réseau. Par exemple, Windows le détecte bien dans
la barre des tâches avec l'icône réseau. Où trouver cette information ?
quelle variable ou quelle fonction le fait ?



J ai essayé IsNetworkAlive du SDK windows mais ca ne marche pas. Quand
je retire le cable cette fontion me renvoie toujours uqe la connexino
est OK. Le problème vient peut etre du SO_KeepAlive dans SetSockOpt...
Mais je n'ai pas accès à tout ca, vu que c'est leur librairie. Je n ai
pas accès au source.



Avec la commande netstat on peut voir les services ouverts. Quand
mon serveur et le client communique on voit bien Established...

Quand je retire le cable : ce service reste Established quelques
secondes (30sec à 2 minutes) avant de se fermer, ce qui est trop long
pour mon application.





Pour résumer, qui peut me dire comment détecter la déconnexion physique ?



MErci pour vos réponses ou mot clé et bravo pour avoir tout lu.

(j étudie une nouvelle piste: mettre un thread pour détecter la connexion, mais je ne sais pas quoi tester :) )

Julien.

2 réponses

yserver Messages postés 203 Date d'inscription lundi 2 août 2004 Statut Membre Dernière intervention 8 septembre 2006
4 mars 2005 à 21:01
Bonjours.
Jai pas de solution directe a te proposé mais une idée a te soumettre

Si le PC perte la connexion sont IP (cable reso debranché), le résultat de ipconfig change imédiatement. Exemple de ipconfig fait imediatemetn avt et apres deconnexion du cable reseau :
C:\D>ipconfig


Configuration IP de Windows


Carte Ethernet Connexion au réseau local :


Suffixe DNS propre à la connexion : yserver.xxxx
Adresse IP. . . . . . . . . . . . : 10.xxx
Masque de sous-réseau . . . . . . : 255.0.0.0
Passerelle par défaut . . . . . . :


C:\>ipconfig


Configuration IP de Windows


Carte Ethernet Connexion au réseau local :


Statut du média . . . . . . . . . : Média déconnecté

A voir...
bon courrage.
0
CyberYul Messages postés 2 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 7 mars 2005
7 mars 2005 à 08:43
Salut et merci pour l'idée,

Voila où j en suis:

J ai modifié une clé du registre:






Ouvrir l'éditeur de registre (Démarrer,
Exécuter, regedit)


Sous le chemin :


HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters/


Sous la clef :
DisableDHCPMediaSense


Valeur : 0


Unité : Hexadécimal



Grâce à ca la perte de la connexion est détectée de suite si je retire le câble sur le serveur.

(Mais si je retire le cable coté client il faut toujours un certain
temps, le serveur est relié sur un hub, ensuite entre ce hub et le
client je ne sais pas ce qu'il y a ).
0
Rejoignez-nous