Ce tutoriel vous présente comment on gère les sockets sur C++ Builder
Client/Serveur avec TClientSocket et TServerSocket
Comment Gère les événements OnClientRead
Et la méthode pour l'envoi de texte
Bonne lecture et bonne prog'
Alors voila mon tutoriel à le but de vous montrer comment gérer les sockets client/Server sur C++ Builder :
Dans la palette de composants ajouter ceux-ci:
DoubleCliquer sur la fenêtre
void __fastcall TForm1::FormCreate(TObject *Sender) { ServerSocket1->Port = 23; ServerSocket1->Active = True; } //--
Sur les évênements de l'onglet Objet Inspecteur, double cliquer sur le cas de OnClose et mettez ce code :
//--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { ServerSocket1->Active = False; } //------
Sur la Fiche (Form1) cliquez sur le contrôle ServerSocket1
Sur les évênements de l'onglet Objet inspecteur, double cliquer sur le cas de OnClientRead et mettez ce code :
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) { Edit1->Clear(); Edit1->Text = Socket->ReceiveText(); } //-
Enregistrer le projet.
Maintenant le Client.
Créer un nouveau projet « Client »
Ajouter un TButton avec le titre (caption) "Send "(envoyer)
Ajouter un ClientSocket
Et TEdit
Double cliquer sur la fenêtre et ajouter ce code :
void __fastcall TForm1::FormCreate(TObject *Sender) { ClientSocket1->Port = 23; ClientSocket1->Host = " Address IP ICI "; ClientSocket1->Active = True; } //-
Et Dans le OnClose ajoutez ce code :
//--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { ClientSocket1->Active = False; } //-
Sur la fiche, cliquer deux fois sur le button « Send » et ajoutez ce code :
void __fastcall TForm1::Button1Click(TObject *Sender) { if( ClientSocket1->Active ) ClientSocket1->Socket->SendText(Edit1->Text); } //-
Enregistrer le projet et exécuter le.
Pour les versions 2009, on utilise SendBuf et ReceiveBuf pour envoyer des messages
CLIENT
Void sendMSg(char * msg) { int len = strlen(msg); ClientSocket->Socket->SendBuf(msg,len); }
Evênements OnRead :
void __fastcall C_ClientSocket::OnRead(TObject *Sender,TCustomWinSocket *Socket) { AnsiString Data; Data.SetLength(Socket->ReceiveLength()); Socket->ReceiveBuf(Data.c_str(),Socket->ReceiveLength()); ShowMessage(Socket->RemoteHost+": "+Data); }
Maintenant on passe au serveur.
SEND
Int Send(char *MSG) { int Len = strlen(MSG); ServerSocket1->Socket->Connections[0]->SendBuf(MSG,Len); }
Evènements OnClientRead :
void __fastcall C_ServerSocket::OnRead(TObject *Sender,TCustomWinSocket*Socket) { AnsiString Data; Data.SetLength(Socket->ReceiveLength()); Socket->ReceiveBuf(Data.c_str(),Socket->ReceiveLength()); ShowMessage (Socket->RemoteHost+": "+Data); }
Voila, c'est la fin du tuto
Amusez vous bien !