2010-09-15 8 views
0

J'ai essayé d'implémenter le paramètre TCP_KEEPALIVE pour un socket de serveur C et je n'arrive pas à comprendre comment vérifier si le socket est marqué comme cassé . J'ai suivi ce tutoriel pour configurer le socket pour qu'il reste actif mais il dit que "Si aucune réponse ACK n'est reçue pendant neuf fois consécutives, la connexion est marquée comme cassée". Ma question est, comment puis-je savoir que le socket est marqué comme cassé?Sockets UNIX C BSD TCP_KEEPALIVE comment vérifier si le socket est marqué comme étant brisé

Tutorial: http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/

Répondre

2

read() de la douille.

read renverra -1 si le socket a été brisé.

+0

En outre, une valeur de retour de 0 à partir de 'recv' indique un arrêt ordonné. –

1

Si le noyau décide que la connexion est interrompue, une erreur se produit lorsque vous essayez d'envoyer ou de recevoir à partir du socket. Vous devriez déjà faire la gestion d'erreur appropriée autour de send et receive pour gérer le cas "normal" où votre pair termine spontanément la connexion. Donc, aucun code de traitement des erreurs "supplémentaires" ne devrait être requis.

Questions connexes