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 Serveur :
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"); }
Du coté de la Form Serveur, j'active la socket sur le OnActivate de la fenetre.
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); }
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 !![]()
Partager