Sie sind auf Seite 1von 6

TS Informatique Option Réseau

Delphi programmation des socketsMme Aissat

La programmation réseau avec les sockets

Dans le contexte réseau, on peut traduire le socket par « Connecteur réseau ».

Un socket est un élément logiciel qui permet à deux ordinateurs de communiquer


par le billet du protocole TCP/IP.

Le but est de pouvoir transférer des données ou échanger des données d’un
ordinateur à un autre.

La communication se fait entre deux processus (deux sources) : un programme


serveur, et un programme client.

Programme Programme
serveur client

Fonctionnement :

Côté serveur : le programme serveur ouvre une connexion socket par un port
et se met à l’écoute des requêtes de programme client.

Côté client : le programme client se connecte à l’ordinateur du programme


serveur par l’adresse IP et le numéro du port.

Une fois la connexion établie, le client et le server peuvent s’envoyer des


requêtes librement.

Utilisation du composant Indy

Dans Delphi, pour établir une connxion en utilisant les socket on manipule les
deux composant :

IdTCPClient de la palette des composants Indy-Client pour le client

et IdTCPServer de la palette des composants Indy-Server pour le


serveur .
TS Informatique Option Réseau
Delphi programmation des socketsMme Aissat

Application 1:

Création d’un programme Client :

1- Préparer la connexion entre server et client :


Réaliser la fenêtre :

• Ajouter le composant IdtcpClient de la palette «indy-client ». changer le


name en Client1.
• Ajouter un composant shape de « Supplément »

La connexion :

procedure TForm1.BconnexionClick(Sender: TObject);


begin
Client1.Port:= strtoint(Eport.text);(* spécifier le port*)
Client1.Host:=Edit1.Text; (* Spécifier l'adresse IP du serveur.*)
Client1.connect; (* demander d’établir une connexion*)
Shape1.Brush.Color := clblue;
(* Brush Spécifie la couleur et le motif utilisés pour remplir le contrôle forme.*)
end;

La déconnexion :

procedure TForm1.Button1Click(Sender: TObject);


begin
Client1.Disconnect; (* se déconnecter*)
Shape1.Brush.Color := clred;
end;
TS Informatique Option Réseau
Delphi programmation des socketsMme Aissat

Création d’un programme Server:

Réaliser la fenêtre suivante :

• Le composant TIdTCPServer de Indy-Server nommer le server1.

La connexion :

procedure TForm1.BconnexionClick(Sender: TObject);


begin
Server1.DefaultPort:= strtoint(eport.Text);
server1.Active := true; (*ouvre la une connexion d'écoute qui rend le socket
attentif aux demandes
des clients.*)
Ehost.text:= server1.localname;(*localname Indique le nom du système local.*)
Shape1.Brush.Color := clblue;
end;

la déconnexion

procedure TForm1.BdeconnexionClick(Sender: TObject);


begin
Server1.Active := false; (* se déconnecter*)
Shape1.Brush.Color := clred;
end;

Pour vérifier la connexion, ajoutant un Mémo et programmant l’événement


Onconnect.
L’évenement Onconnect se déclenche lorsqu’un client tente de se connecter.
TS Informatique Option Réseau
Delphi programmation des socketsMme Aissat

procedure TForm1.server1Connect(AThread: TIdPeerThread);


begin
memo1.Lines.Add ('Connecter de: ' +
AThread.Connection.Socket.Binding.PeerIP);

end;

AThread.Connection.Socket.Binding.PeerIP permet de connaitre l’adresse


ip (PeerIp) de la connexion (Athread représente le processus qui a demandé la
connexion )
Exemple l’éxecution :

Niveau client :

Niveau seveur
TS Informatique Option Réseau
Delphi programmation des socketsMme Aissat

Application 2:

Envoyer des messages du client au serveur:

Ajouter les composants un Bouton, un Edit comme suit :

procedure TForm1.BenvoyerClick(Sender: TObject);


begin
client1.WriteLn(etext.Text); (* envoyer un message de type string à la
connexion courante *)
end;

Pour que le socket serveur lise des informations dans un socket client, on
programme l’événement OnExecute :

OnExecute est déclenchée pour répondre le processus demandeur et ce dernier


est passé comme paramètres (Athread).

procedure TForm1.server1Execute(AThread: TIdPeerThread);


var text:string;
begin
text :=athread.Connection.readln();
memo1.Lines.add(text);
end;

ou encore :
TS Informatique Option Réseau
Delphi programmation des socketsMme Aissat

text :=athread.Connection.readln();
memo1.Lines.add( athread.Connection.socket.Binding.peerIp+ text);