6
TS Informatique Option Réseau Delphi programmation des sockets Mme 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. 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 . Programme Programme

Delphi programmation reseau avec Indy

  • Upload
    lachir

  • View
    1.142

  • Download
    8

Embed Size (px)

DESCRIPTION

Cours sur l'utilisation du composant Indy dans la programmation réseau.

Citation preview

Page 1: Delphi programmation reseau avec Indy

TS Informatique Option RéseauDelphi programmation des sockets Mme 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.

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 .

Programme serveur Programme client

Page 2: Delphi programmation reseau avec Indy

TS Informatique Option RéseauDelphi programmation des sockets Mme 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;

Page 3: Delphi programmation reseau avec Indy

TS Informatique Option RéseauDelphi programmation des sockets Mme 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.

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

end;

Page 4: Delphi programmation reseau avec Indy

TS Informatique Option RéseauDelphi programmation des sockets Mme Aissat

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

Page 5: Delphi programmation reseau avec Indy

TS Informatique Option RéseauDelphi programmation des sockets Mme 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 :

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