[gull] socket en C

Yann Sagon ypublic at hasa.ch
Thu May 15 10:16:14 CEST 2008


Marc Mongenet a écrit :
> Le 14 mai 2008 15:32, Yann Sagon <ypublic at hasa.ch> a écrit :
>   
>> Bonjour,
>>
>> Je suis en train d'utiliser des socket (af_inet, sock_stream) en C et j'ai
>> quelques questions:
>>
>> comment détecter la perte de connexion d'un client? Dans mon cas, je suis en
>> attente sur un "select" en surveillant un set "readfds". Normalement, le
>> client quite en envoyant une commande, mais dans le cas d'une déconnexion
>> brutale, comment terminer proprement? Faut-il voir du côté d'un timeout?
>>     
>
> Tant qu'on n'utilise pas la connexion, on ne le détecte pas.
>
>   
C'est ce qu'il me semblait.
> Une autre solution est d'utiliser l'option SO_KEEPALIVE, qui vérifie l'état de
> la connexion toutes les deux heures selon le livre. Mais le livre conseille
> plutôt d'utiliser un timeout dans l'application car SO_KEEPALIVE manque
> de flexibilité.
>
>   
Je crois que cette solution ne sera pas envisageable!
>> J'ai également le problème suivant: si un client tente de se connecter sur
>> ma socket et que j'ai atteint le nombre maximale de client, j'aimerais
>> notifier le client. Y a t'il un moyen sans faire de "accept" préalablement?
>> Et également, comment refuser ce client?
>>     
>
> Pas à ma connaissance. Mais si tu veux notifier le client, logiquement il
> faut bien commencer par accepter la connexion, non ?
>
>   
Je me demendais si un mécanisme existait, mais il ne semble pas, donc je 
vais probablement faire un accept, un message de rejet et un close.




More information about the gull mailing list