IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algorithme de suivi des clients connectés


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut Algorithme de suivi des clients connectés
    Bonjour à tous et toutes !

    J'ai un petit programme que je développe et qui peut accueillir quelque dizaines de clients (réseau TCP).
    Mon problème se situe au niveau du suivi de ces clients.

    En clair, imaginons la situation suivante:
    J'ai un tableau de valeurs binaires, en fonction du numéro du client.
    Si j'ai par exemple 3 clients maximum, j'ai un tableau e = {F, F, F}
    J'ai un premier client qui se connecte. Il va donc occuper ma première case.
    e = {T, F, F}
    Puis un second client
    e = {T, T, F}
    Le premier part
    e = {F, T, F}
    Un troisième arrive, il occupe la première case libre:
    e = {T, T, F}

    L'avantage, c'est que le tableau e, en le parcourant, me donne l'indice du tableau contenant un client (ça me permet d'avoir un tableau statique de clients, car la structure est assez complexe, et je ne veut pas d'allocation dynamique).
    L'inconvénient, c'est que ce tableau n'est pas génial en temps de parcours, si j'ai beaucoup de clients, et beaucoup de trous.

    Y a-t-il une meilleure solution, plus efficace ?
    Cette solution a des limites. Par exemple, je ne peux pas rechercher un client donné sans parcourir mon tableau entièrement.
    J'avais pensé à utiliser une liste chaînée (simple ou double), mais ça ne me satisfait qu'à moitié, car je ne sais pas si c'est vraiment pertinent.

    Je ne sais pas si c'est très clair...
    Merci d'avance pour vos réponses !
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Citation Envoyé par progfou Voir le message
    L'inconvénient, c'est que ce tableau n'est pas génial en temps de parcours, si j'ai beaucoup de clients, et beaucoup de trous.
    Pour éviter les trous, si l'ordre des éléments n'a pas d'importance dans ton tableau, une technique utilisée pour la suppression d'un élément est de l'échanger avec le dernier élément plutôt que d'insérer un trou :
    Ton état : e = {T1, T2, T3,F,F,F}
    Le premier part : tu inverses le premier et le dernier et tu marques le dernier comme supprimé : e = {T3, T2,T1->F, F,F,F}
    Tu n'as donc plus de trous -> e = {T3, T2, F, F, F, F}

  3. #3
    Membre éclairé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Points : 763
    Points
    763
    Par défaut
    Ca veut dire qu'à la suppression, je dois chercher d'une manière ou d'une autre si j'ai des trous, et les combler.
    Pourquoi pas... reste plus qu'à écrire un algo qui fasse tout ça .
    Aucune réponse à une question technique par MP.
    Ce qui vous pose problème peut poser problème à un(e) autre

    http://thebrutace.labrute.fr

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par progfou Voir le message
    Ca veut dire qu'à la suppression, je dois chercher d'une manière ou d'une autre si j'ai des trous, et les combler.
    Non. Tu as dans ton tableau le nombre d'élément valides, mettons n. Et quand tu supprimes un élément en fait tu le swap avec l'élément n et tu décrémentes n. Comme ça tu es garanti que les n premiers éléments de ton tableau sont toujours valides.

Discussions similaires

  1. liste des IP des clients connectés sur un serveur
    Par wahbi dans le forum Réseau
    Réponses: 5
    Dernier message: 11/02/2009, 15h27
  2. liste des IP des clients connectés sur un serveur
    Par wahbi dans le forum Administration
    Réponses: 3
    Dernier message: 10/02/2009, 12h46
  3. Réponses: 2
    Dernier message: 24/06/2008, 12h40
  4. Réponses: 2
    Dernier message: 26/01/2008, 12h19
  5. [MySQL] Le suivi des commandes des clients en ligne.
    Par merymaru dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/06/2007, 01h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo