2010-04-15 4 views
0

Je suis en train de concevoir une application Client Server Chat en Java qui utilise une connexion TCP entre eux. Je ne suis pas capable de comprendre comment détecter au niveau du serveur quand un client se ferme avec force. J'ai besoin de cela comme je suis en train de maintenir une liste de clients en ligne et j'ai besoin de supprimer l'utilisateur de la liste quand il ferme la connexion avec force.Question concernant la connexion TCP Arrêt forcé

Toute aide sera grandement appréciée.

Merci

Tara Singh

+0

Avez-vous trouvé cela utile? Veuillez retourner à vos questions et gardez-les à jour. – Kylar

Répondre

2

Une façon de recevoir une notification en temps opportun d'une déconnexion est de tenter d'envoyer un petit morceau d'information à intervalles réguliers. Ensuite, la dernière chose que vous savez d'un client déconnecté est au plus votre intervalle. Les gens appellent cela un battement de coeur.

+0

Merci pour cette suggestion. J'ai effectivement mis en œuvre cela. –

1

En supposant que votre serveur utilise java.net.Socket, vous pouvez interroger le socket de temps en temps, il fournit les méthodes isClosed() et isConnected().

0

Cela dépend de la façon dont vous manipulez votre prise E/S

Par exemple, si vous utilisez un sélecteur (java.nio) pour faire E/S non-blocage sur un ensemble de douilles vous Pour connaître les déconnexions la prochaine fois que vous appelez select(). Peut-être que si vous avez mis à jour votre question sur la façon dont vous manipulez les prises de courant?