Bonjour à tous.
Je développe un client de messagerie pour mon école, en utilisant un protocole propre à l'école.
Ce client se connecte en TCP, permet la discussion, toussa, pas de soucis, rien que du trèsa basique.
Le problème est que ce serveur tombe assez régulièrement, sans en notifier les clients en bout de chaine ; peut-être crash-t-il, peut-être n'il y a-t-il plus de route pour le joindre, toujours est-il qu'il n'est plus possible de le joindre.
Et le problème est qu'il se passe un très gros bout de temps avant que les write/send se mettent à renvoyer -1.
J'ai essayé différentes bidouilles pour être notifié :
rien ne m'a notifié de l'invalidité de la connexion.
- setsockopt(SO_KEEPALIVE,...)
- poll avec POLLER | POLLHUP
- select avec le fd dans except_fds
Je veux que lorsque le serveur tombe ou que je débranche mon câble, ou au moins que le serveur tombe, je sache que la connexion n'est plus valide ; je suis avec un amis sur ce proj', lui a résolu ce problème en mettant en envoyant un ping toutes les 5 secondes au serveur. J'espère qu'une autre solution est possible.
Merci d'avance.
Partager