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 TClientSocket - TServerSocket


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut Probleme TClientSocket - TServerSocket
    Bonjour à tous,

    Un petit probleme avec la communication par socket !

    Je lance à partir d'une application cliente, une autre application serveur, sur le clic d'un bouton "Envoi", et je voudrais communiquer avec elle.

    Lors de la connection de ma socket cliente ( ClientSocket1->Active = true ), je voudrais de suite envoyé un message à mon serveur.

    Code Client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void __fastcall TfrmClient::btnEnvoiClick(TObject *Sender)
    {        ShellExecute(Handle,"open","ServeurMail\\ProgServeur.exe",NULL,NULL,SW_SHOWNORMAL);
     
            ClientSocket1->ClientType = ctNonBlocking;
            ClientSocket1->Active = true ; 
     
            ClientSocket1->Socket->SendText("Test");
    }
    Code Serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void __fastcall TfrmServeur::ServerSocket1ClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
            AnsiString recept ;
            StatusBar1->SimpleText="Dialogue en cours" ;
            recept = Socket->ReceiveText() ;
            ShowMessage("reçu : "+recept);
    }
    Du coté de la Form Serveur, j'active la socket sur le OnActivate de la fenetre.

    Mon problème est que je ne reçois pas le premier coup, la chaine de caracteres "test", envoyé par mon client, juste après sa connexion ...

    En revanche si sur ma Form du client, j'utilise la méthode SendText, sur le clic d'un autre bouton (et après m'etre connecté en ayant cliqué sur le bouton Envoi), le texte est bien reçu par mon serveur.

    Je pense donc qu'il ya un laps de temps, entre la connexion de ma socket cliente, et le premier envoi de texte, ce qui fait que je perds la première communication ...

    Est ce que je me trompe, et comment puis je y remedier ?

    D'avance merci !

  2. #2
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    Juste sur le principe : comme une connexion TCP suppose plusieurs échanges entre les 2 sockets, il te faut répondre à l'autre partie une fois que la connexion est établie. Je suppose qu'un évènement te permet de le savoir et c'est dans cet évènement qu'il faut mettre ton code, et pas tout de suite après la commande d'activation.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 28
    Par défaut
    Citation Envoyé par Altau
    Je suppose qu'un évènement te permet de le savoir et c'est dans cet évènement qu'il faut mettre ton code, et pas tout de suite après la commande d'activation.
    Effectivement merci, tu m'as mis sur la bonne piste, en executant le programme en mode pas à pas, je me suis rendu compte que le client n'était pas connecté instantanément après l'activation de son socket ... donc le message que j'envoyais tout de suite derrière était ignoré !

    Pour cela, il faut se servir de l'évenement "OnConnect", du socket

  4. #4
    Membre émérite
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Par défaut C++ Builder sources
    Salut !

    Esque t'as vu ça ?


    Et y en a plein d'autres sources pour ne pas avoir de problèmes similaires ,regarde ici aussi : C++ Builder sources


    Bonne chance .

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

Discussions similaires

  1. TserverSocket SendText() probleme
    Par jabaka dans le forum C++Builder
    Réponses: 9
    Dernier message: 27/06/2007, 22h01
  2. Réponses: 10
    Dernier message: 07/02/2007, 07h43
  3. TClientSocket et TServerSocket bloquant
    Par manu225 dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/01/2007, 12h13
  4. Réponses: 2
    Dernier message: 12/10/2006, 23h36
  5. Réponses: 7
    Dernier message: 22/05/2006, 14h44

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