IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Envoi Server -> Client INDY


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Par défaut Envoi Server -> Client INDY
    Bonjour


    Je débute en programmation avec le composant INDY et donc je suis tombé assez vite sur un problème que je ne comprends pas. J'ai 2 formulaires ( client et server ) :


    Client

    - 1 Bouton pour se connecter au server
    - 1 ListBox ( Log )
    - 1 Bouton pour envoyer quelque chose au server.

    ----------------

    Server

    - 1 Bouton pour activer le server ( Client.Active := True )
    - 1 ListBox ( Log )
    - 1 Bouton pour envoyer quelque chose au client.

    ----------------

    Voici mon problème :

    Quand je clique sur le bouton pour envoyer quelque chose au server à partir du client, il me met cette information dans la ListBox du client ( comme il se doit ).

    Par contre dès que je click sur le bouton pour envoyer quelque chose au client à partir du server , il ne me met pas cette information dans la ListBox du server.


    Voici le code du server :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    
    SERVER :
    
    var client : TIdPeerThread; 
    
    //////////////
    
    procedure TServer.ButtonConnectClick(Sender: TObject);
    begin
     Server.Active:=True;   // serveur est activé
    end;
    
    /////////////
    
    procedure TServer.ServerConnect(AThread: TIdPeerThread);
    begin
    if client=nil then  
     begin
      with athread.Connection do
       begin
        client:=athread;
        client.Connection.WriteLn('Connecté avec serveur');
       end;
     end;
    end;
    
    ////////////
    
    procedure TServer.ServerExecute(AThread: TIdPeerThread);
    begin
     with athread.Connection do
      begin
       client:=athread;
       Log.items.add(Client.Connection.ReadLn);
      end;
    end;
    
    //////////////////////////////
    // Ici ca marche pas !!   //
    /////////////////////////////
    
    procedure TServer.Button2Click(Sender: TObject);
    begin
      client.Connection.WriteLn('Test'); // envoie de 'Test' au client
    end;
    Voici le code du client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    procedure TClient.ButtonConnectClick(Sender: TObject);
    begin
     Client.Connect; // Connection au serveur
    end;
     
    //////////
     
    procedure TClient.ClientConnected(Sender: TObject);
    var S:string;
    begin
     S:=Client.readln; 
     if S <> '' then Log.items.add(S);
    end;
     
    //////////
     
    procedure TClient.Button2Click(Sender: TObject);
    begin
     Client.WriteLn('TEST'); // envoie de 'TEST' au serveur
    end;

    Donc pour résumer :

    Le client envoie le string 'TEST' au serveur et celui ci met le string recu dans la ListBox Log.

    Par contre le serveur qui veut envoyer le string 'TEST' au client et celui ce met le string recu dans la ListBox Log, ca ne marche pas.


    Merci d'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    685
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Par défaut
    Le serveur n'a pas à envoyer de données en dehors de OnExecute... C'est pour cela que c'est un serveur: il réponds aux requêtes mais n'en initie jamais.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Par défaut
    Il faut créer une thread du côté du Client pour gérer la réception des messages du serveur.

Discussions similaires

  1. Web services asynchrone - push server vers client
    Par boulb dans le forum Services Web
    Réponses: 3
    Dernier message: 28/11/2006, 18h51
  2. Hébergement server.mdb / client final user.
    Par khorn dans le forum Access
    Réponses: 8
    Dernier message: 17/10/2006, 11h24
  3. [SQL Server 2005][Client] utilitaire réseau client
    Par gunico dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/03/2006, 09h29
  4. Envoi de fichier avec Indy
    Par Nicodemus dans le forum Web & réseau
    Réponses: 2
    Dernier message: 28/10/2005, 15h29
  5. Server ou client?????
    Par telescan dans le forum Développement
    Réponses: 4
    Dernier message: 28/05/2004, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo