CodeS-SourceS
Rechercher un code, un tuto, une réponse

Programmer des socket en c++ builder client/server socket

Avril 2017

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'


Introduction


Alors voila mon tutoriel à le but de vous montrer comment gérer les sockets client/Server sur C++ Builder :

Application Serveur

  • Démarrer votre C++ Builder (Moi j'ai la version 2007)
  • Créer un nouveau projet « Serveur »


Dans la palette de composants ajouter ceux-ci:
  • TEdit
  • TButton, en spédifiant le titre (Caption) : "Fermer"
  • TServerSocket


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.

Application Client


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.

Spécificité version 2009


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 !

A voir également

Publié par cs_xmustapha .
Ce document intitulé «  Programmer des socket en c++ builder client/server socket  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Les fonctions à nombre variable d?arguments
Opengl : gluunproject / comment projeter la souris sur un plan !