2010-01-25 8 views
2

Je me demande comment implémenter une gestion de client pour un serveur socket.Socket Server: Gérer les connexions client

Je suis dans le cas où je voudrais savoir si le client vient de se reconnecter ou s'il s'agit d'un nouveau client. Je sais, ça ne devrait pas être comme ça. C'est un serveur plutôt temporaire, cependant, qui ne doit être utilisé que pour quelques heures.

Je pensais à laisser chaque client passer son propre GUID au serveur. Une fois que le serveur "reconnaît" un client, il peut se débarrasser des connexions précédentes de ce client.

Comment aborderiez-vous ce problème? Ou est-ce complètement désapprouvé de cette façon?

Merci!

Répondre

2

Si vous utilisez TCP/IP, vous pouvez utiliser les adresses IP et le port pour identifier les clients de manière unique. Et vous pouvez vous débarrasser de votre connexion après l'événement de déconnexion. Si l'adresse IP et le port ne suffisent pas à identifier le client, vous pouvez utiliser le GUID. Et encore une fois avec TCP/IP dans de nombreux cas, vous pouvez vous débarrasser de la connexion après un événement de déconnexion.

+0

Merci, je voudrais suivre cette approche GUID un peu plus. Cela n'aurait de sens que si le serveur était informé du GUID de chaque client. Par conséquent, je devrais dériver de 'Socket' et ajouter mon GUID. Mais alors je rencontre des difficultés à gérer toutes les méthodes de Socket, qui retournent une instance de 'Socket'. – rdoubleui

+1

Dans la plupart des cas, vous devriez préférer la composition à l'héritage. Je veux dire que vous ne devriez pas hériter de Socket, vous devriez plutôt créer votre propre classe, qui contient Socket et GUID. Ou votre classe de serveur peut contenir un dictionnaire avec Socket en tant que clé et un GUID en tant que valeur. –

+0

Ok, je vois le point. Mon but était, cependant, d'identifier chaque client lors de la connexion (avec le GUID) avec le serveur. Je suppose que je pourrais envoyer le GUID comme le premier message lors de la connexion. Je ne vois pas d'autre moyen de le faire, n'est-ce pas? Merci pour votre contribution! – rdoubleui

Questions connexes