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

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
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.
Rejoignez-nous