on dispose de : application client/serveur
le client est écrit en VC++
le serveur en C# 2005
le client connecte au serveur
le problème est le suivant :
comment le serveur détecte que le client à couper la connexion ie fermer son socket?
une application client/serveur
le client écrit en VC++ (pas de problème ds le client)
le serveur en C#
quand le client connecte au serveur, il est accepté
les échanges de données se font normalement sans erreur
quand le serveur se déconnecte, il y a pas de problème puisque le client sait que le serveur est déconnecté
le broblème est le suivant:
quand le client se déconnecte le serveur ne s'apperçoit pas de cette déconnexion
il est possible que la déconnexion se fait quand le serveur et le client échange des données
elle est également possible quand le client est dans la liste des attentes
le serveur n'ytilise pas la méthode poll
le serveur utilise les méthodes send receive en suite il travaille avec le buffer.
l'echange de données se reduit simplement en chaines de caractère
comment faire pour que le serveur sait que le client est déconnecté (urgent) j'ai besoin de cà puisque je doit journalisé cette evenment
Yhank you j'ai compris votre première solution Merci encore une fois deux fois mille fois
j'ai essayé la solution est ça ne marche pas
je vais vous détaillé le pb:
moi j'ai developper le serveur en C# et j'ai pas touché au client qui était déja développé en c++
donc j'ai adapter mon serveur à ce client
j'ai suivi les étapes suivantes:
je crée le socket du seveur (srvsocket) et je fais bind;
en suite je fais srvsocket.blocking=false (et je pense que c là le pb)
je fais srvsocket.listen();
je fais srvsocket.accepte() dans ce cas accepte n'est pas bloquante
1-dans le cas de reception de données je fais:
je teste sur srvsocket.availible;
si il existe des données envoyées par le client je fais srvsocket.receive(....);
sinon je passe directement sans recevoir
2- dans le cas d'envoi je fais directement srvsocket.send();
les deux cas précédent sont dans un bloc try
même si le client est déconnecté je ne reçoit pas une exception et j'ai tester votre solution avec la méthode poll() et availible et ça ne marche pas
aidez moi.
merci
une deconnection non "propre" ne peut se detecter qu'avec un "timeout" la pile IP tente deseperement d'envoyer les paquet pendant un temps et fini par abandonner soit apres un nombre d'envoi, soit apres un temps déterminé (ce n'est generalement pas parametrable) et ce n'est qu'a ce moment que le serveur ou client peut savoir que la connection est tombé.
Tu peut instaurer une forme de ping-pong entre le client et le serveur et l'utiliser pour savoir si le client ne répond pas assez vite qu'il peut etre concidéré comme "mort" donc fermer la socket correspondante

Proud to be CAKE©®™
GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.