Bonjour tout le monde
Alors voila mon tutorial à le but de vous montrer comment gérer les sockets client/Server sur C++ Builder :
On Commence par l'application Serveur :
- Démarrer votre C++ Builder (Moi j'ai la version 2007)
- Créer un nouveau projet « Récepteur »
Dans la palette de composants ajouter un
- TEdit
- TButton « le titre Caption est Fermer »
- TServerSocket
Double Clique 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 clique 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 clique sur le cas de OnClientRead
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{
Edit1->Clear();
Edit1->Text = Socket->ReceiveText();
}
//-
Maintenant le Client :
- Créer un nouveau projet « Serveur »
- Ajouter un TButton de la caption : Send (envoyé)
- Ajouter un ClientSocket
- Et TEdit
Double clique 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 »
Ajoutez ce code :
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if( ClientSocket1->Active )
ClientSocket1->Socket->SendText(Edit1->Text);
}
//-
- Enregistré le projet et exécuté 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 !