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

C++Builder Discussion :

ActiveConnections


Sujet :

C++Builder

  1. #1
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut ActiveConnections
    j'utilise builder 6 ent ,precisement le composant tserversocket ,j'accepte des connections dans onconnect ,je verifie le login et le pass avec receivetext et si tous baigne j'enregistre dans une bd ,l'ip (RemoteAddress) ,le handle (SocketHandle) pour que je puisse deconnecter ce client avec Disconnect(int handle) ,mais voila le probléme c que en apprenant que pour envoyer une trame a un client x je ne peux pas utiliser le handle de sa socket ,fo que j'utilise Socket->Connections[num de la connexion]->SendText("bla bla") ,je sais aussi que je peux savoir combien de client sont connectés par ActiveConnections ,alors voila le probléme avec cette methode (qui n'utilise pas le handle comme identifiant du client) :

    1-le client x connecte ,ActiveConnections est à 1 ,je peux envoyer des données a ce client en utilisant Socket->Connections[0]->SendText("bla bla")
    2-le clent y connecte ,ActiveConnections est à 2,je peux envoyer des données a ce client en utilisant Socket->Connections[1]->SendText("bla bla")
    3-le clent z connecte ,ActiveConnections est à 3,je peux envoyer des données a ce client en utilisant Socket->Connections[2]->SendText("bla bla")

    le probléme c que quand le client y deconnecte et que ActiveConnections devient 2 ,cette ligne utilisée pour envoyer à client z genere une erreure
    Socket->Connections[2]->SendText("bla bla") ,en fait il fo mettre Connections[1] c ca mon probléme ,si c'etait avec le handle ca serais plus simple et efficace alors comme ca j'arrive pas a gerer mes clients

  2. #2
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    ok peut etre que g mal exprimé mon probléme ,jvé parler court :
    je code une applciation serveur en utilisant le composant Twinserversocket de c++ builder 6 ,j'accepte plusieurs connexions clients et je les gerent tous ,mon probléme c que pour envoyer du text a un client quelconque il fo faire ServerSocket1->Socket->Connections[x]->SendText("blabla"); ,avec x le numero de la connection (disant identifiant) or ce numero ne designe pas toujours le meme client ,paske si un autre client deconnecte le numero qui identifie le client que je veux communiquer avec change et c le bordel avec une 15ene de clients qui connectent et deconnectent tout le temps ,j'arriverais pas a les gerer ,y'a t il une facon de le faire ?

  3. #3
    Membre régulier

    Inscrit en
    Mai 2002
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 93
    Points : 85
    Points
    85
    Par défaut
    g trouvé la soluce
    voila une fonction qui a partir du handle retourne le numero de connection x a mettre dans Connections[.]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int h2c(int handle) {
     int client=-1; //par defaut y'a pas de client avec handle
     for (int i=0;i<=Socket->ActiveConnections-1;i++)
     if (Socket->Connections[i]->SocketHandle=handle) {
      client=i;
      break;
     }
     
     return client;
    }

+ Répondre à la discussion
Cette discussion est résolue.

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