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 :

Probleme avec les composant socket de builder


Sujet :

C++Builder

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Probleme avec les composant socket de builder
    Bonjour !!!

    j'ai un petit probleme avec les socket.
    J'arrive a envoyer du client vers le serveur mais l'envoi du serveur vers le client crée une érreur sur mon serveur.

    mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ServerSocket1->Socket->SendText("message");
    Le message d'erreur est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur : une requete d'envoie ou de reception de données n'a pas été 
    autorisée car le socket n'est pas connecté et aucune adresse 
    n'a été fournie
    si quelqu'un pouvais m'aider.
    Par avance merci!!

  2. #2
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 51
    Points : 53
    Points
    53
    Par défaut
    Tu peux mettre davantage de code stp (du côté du serveur) ?

  3. #3
    Membre actif Avatar de cfdev
    Homme Profil pro
    Passionné
    Inscrit en
    Octobre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Passionné

    Informations forums :
    Inscription : Octobre 2004
    Messages : 220
    Points : 210
    Points
    210
    Par défaut
    Je pense qd même que le message d'erreur est assez clair.
    il faut vérifier la connection s'il y a.

    ++
    mcercle facturation - Logiciel de facturation Win/Mac/Linux

  4. #4
    Responsable Magazine

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Points : 22 087
    Points
    22 087
    Par défaut
    Dans quel contexte envoie tu le message du serveur au client ?
    Si c'est pour répondre au client qui vient juste d'envoyer un message, l'evenement OnClientRead est déclanché lorsqu'un client écrit au serveur, en paramètre de cette fonction est précisé le Socket du client, il faut alors faire ceci pour envoyé un message au meme client a partir de cette evenement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Socket->SendText("Message") ;
    Sinon pour envoyer à n'importe quel endroit du programme et à n'importe quel client il faut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ServerSocket1->Socket->Connections[numClient]->SendText("Message") ;
    le numClient étant un int, allant de 0 au nombre de connexions, (cet à dire pour 10 clients de 0 à 9), à toi de savoir quel est le numéros du client au quel tu veut envoyer le message, (à savoir aussi, si le client 4 se déconnecte, le numero 5 pass 4, le 6 passe 5, etc...)
    A plus
    Quand une réponse vous a été utile, pensez à utiliser le nouveau système de notation

    Lisez le magazine de developpez.com.
    Mes tutos : http://pottiez.developpez.com

    La FAQ BCB -> 642 Questions/Réponses, si vous voulez participer, contactez moi. Aide de BCB6 en français

    N'oubliez pas que l'aide existe et est affichée sous simple pression de la touche F1 , une touche c'est plus rapide que tout un message .

  5. #5
    Membre actif Avatar de Bily.sdi
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 208
    Points : 206
    Points
    206
    Par défaut
    ceci est bcp plus pro

    chaque socket a un handle, pour chque socket clietn connecté , sauvegarder son handle et lui mettre un nom , pc-01 par ex.

    le socket serveur envoie un message uniquement au socket client dont le handle est rechecrhé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
     VecIterator = vecClients.begin();
      while(VecIterator != vecClients.end())
      {
        NomClient = (*VecIterator).first;
        HandleClient = (*VecIterator).second;
     
        //Séletionner le client correspondant au nom pour retrouver le SocketHandle
        if(NomClient == NomListe)
        {
          for (int i=0; i < ServerSocket1->Socket->ActiveConnections; i++)
          {
            if(ServerSocket1->Socket->Connections[i]->SocketHandle == HandleClient)
            {
              ServerSocket1->Socket->Connections[i]->SendText(Memo1->Text);
              break;
            }
          }
        }
        VecIterator++;
      }

    ou alor pour s'ammusé , on peut faire comme le protocol token ring

    qui est l'envoie d'un message a tt le monde, chaque client verifie le message

    et lui demande , c'est pour moi ou pas ? le client teste le nom du message

    si le mesage commence avec pc-09 et c'est le pc-01 qui le lie ,
    le pc-01 doit se dire il ne m'est pas destiné, seul le pc-09 devra traiter le message.

    @+

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/05/2009, 12h08
  2. Réponses: 1
    Dernier message: 31/07/2008, 10h42
  3. probleme avec les sockets
    Par lilou77 dans le forum C++
    Réponses: 2
    Dernier message: 27/08/2007, 14h54
  4. probleme avec les sockets
    Par iznogoud36 dans le forum Linux
    Réponses: 4
    Dernier message: 20/12/2006, 10h33
  5. probleme avec les composants de windows
    Par lucky31 dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 05/10/2006, 16h30

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