Comment réaliser un programme de chat
ou bien de jeu en réseau en Delphi (ou autre)

1. Principe général:

  • On utilise les composants ClientSocket et ServerSocket.
  • L'un des ordinateurs fait tourner le serveur.
  • Tous les autres (et lui-même éventuellement) sont des clients du serveur.
  • Les clients ne communiquent pas directement entre-eux, mais par l'intermédiaire du serveur, come sur le chéma ci-dessous:

2. Connecter les joueurs :

L'un des joueurs lance le serveur
   - Choix du port utilisé : ServerSocket.port:=1024; (par exemple)
   - Lancement du serveur : ServerSocket.open;

Les clients se connectent au serveur
   - Choix du port: ClientSocket.port:=1024; (le même que pour le serveur)
   - Choix de l'hôte: ClientSocket.host:= nom-serveur
     ou bien ClientSocket.address:=192.168.0.1 (l'hôte est prioritaire sur l'adressse)
   - Connexion au serveur : ClientSocket.open;

3. Les joueurs communiquent :

Les évènements OnConnect et OnDisconnect permettent au serveur d'identifier les différents clients. C'est là que l'on échangera les prodécures d'identification et que l'on renseignera le nouveau client sur l'état du jeu, la liste des participants, etc.

Le serveur écrit à un client:
   - ServerSocket.connections[n°-client].sendtext(message);

Le serveur écrit à tous les clients:
   - For k:=0 to ServerSocket.socket.activeconnections-1 do
          ServerSocket.connections[k].sendtext(message);

Un client écrit au serveur :
   - ClientSocket.socket.sendtext(message);

En réception, nous utilisons les évènements Clientread et Read.

Le serveur reçoit un message d'un client :
   - Procedure Tform1.ServersocketClientread(Sender:Tobject;Socket:TcustomWinSocket);
      begin
         Showmessage(Socket.receivetext);
      end;

Le client reçoit un message du serveur :
   - Procedure Tform1.ClientsocketRead(Sender:Tobject;Socket:TcustomWinSocket);
      begin
         Showmessage(Socket.receivetext);
      end;

3. Créer le jeu :

Pour jouer, il ne reste plus qu'à répertorier les différentes commandes et à les interpréter à la réception.

< retour