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

Web & réseau Delphi Discussion :

[Indy] Architecture Client/Serveur


Sujet :

Web & réseau Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut [Indy] Architecture Client/Serveur
    Héééé Oui une autre question..

    Pour me pratiquer je fait un genre de service genre IRC...

    J'ai fait un client, et le client est capable d'envoyer des message au serveur.. et le serveur est capable de renvoyer le message a tous les clients. Mais le client est pas capable de le voir... ou de l'afficher dans une boite memo..

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    J'ai vu une fonction : TIdConnectionIntercept.

    Est-ce que ca peux marcher? Ca l'air de correspondre a mes besoins mais je ne sais pas comment elle marche...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Alors, personne sais comment mon client peut recevoir les broadcast messages du serveur?

  4. #4
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    C'est étrange ça.
    Tu es sûr que ton client garde bien la connexion ?
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Oui, je suis sur et certain.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Le pire c'est que le serveur envoie un greeting en premier, et le client le vois ca!

    Si ca peux aider, le code 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    unit Client;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls, ComCtrls, IdBaseComponent, IdComponent,
      IdTCPConnection, IdTCPClient, IdAntiFreezeBase, IdAntiFreeze;
     
    type
      TForm2 = class(TForm)
        PageControl1: TPageControl;
        TabSheet2: TTabSheet;
        Connect: TButton;
        Disconnect: TButton;
        IdTCPClient1: TIdTCPClient;
        Memo1: TMemo;
        msg: TEdit;
        send: TButton;
        Shape1: TShape;
        TabSheet1: TTabSheet;
        Host: TEdit;
        Port: TEdit;
        Nick: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        procedure DisconnectClick(Sender: TObject);
        procedure ConnectClick(Sender: TObject);
        procedure IdTCPClient1Connected(Sender: TObject);
        procedure IdTCPClient1Disconnected(Sender: TObject);
        procedure sendClick(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form2: TForm2;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm2.ConnectClick(Sender: TObject);
    begin
    IdTCPClient1.Host := Host.Text;
    IdTCPClient1.Port:=StrToInt(Port.Text);
    IdTCPClient1.Connect();
     
    end;
     
    procedure TForm2.DisconnectClick(Sender: TObject);
    begin
    IdTCPClient1.Disconnect;
    end;
    procedure TForm2.IdTCPClient1Connected(Sender: TObject);
    var
    line : string;
    begin
    Shape1.Brush.Color:=clGreen;
    Memo1.Lines.Add('Now connected to '+Host.text+' on port '+Port.text);
    Line := IdTCPClient1.ReadLn();
    Memo1.Lines.Add(Line);
    end;
     
    procedure TForm2.IdTCPClient1Disconnected(Sender: TObject);
    begin
    Shape1.Brush.Color:=clRed;
    Memo1.Lines.Add('Now disconnected');
    end;
    procedure TForm2.sendClick(Sender: TObject);
    begin
    IdTCPClient1.WriteLn('<'+nick.Text+'> '+msg.Text);
    end;
    end.

  7. #7
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    et donc, c'est ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Line := IdTCPClient1.ReadLn();
    qui reçoit rien, c'est ça ?
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  8. #8
    Membre expérimenté

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    La manière de procéder que tu utilises n'est pas correcte. Indy est bloquant et synchrone, tu ne dois pas utiliser les évènements du socket pour lire des données. Ce que tu fais conviendrait plutôt pour des sockets asynchrones comme ICS (cf. la FAQ Indy sur ce site)

    Avec Indy, il faudrait plutôt faire une procédure principale tournant en boucle , et tant que le socket est connecté, lire ou envoyer une ligne. Tu as un exemple sur ce point dans la liste des exemples Indy :

    http://www.atozed.com/indy/Demos/index.iwp
    "It's more fun to compute !"

  9. #9
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Citation Envoyé par Reisubar
    La manière de procéder que tu utilises n'est pas correcte. Indy est bloquant et synchrone, tu ne dois pas utiliser les évènements du socket pour lire des données. Ce que tu fais conviendrait plutôt pour des sockets asynchrones comme ICS (cf. la FAQ Indy sur ce site)

    Avec Indy, il faudrait plutôt faire une procédure principale tournant en boucle , et tant que le socket est connecté, lire ou envoyer une ligne. Tu as un exemple sur ce point dans la liste des exemples Indy :

    http://www.atozed.com/indy/Demos/index.iwp
    cqfd
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Merci, grace au Demos j'ai trouvé le probleme et j'ai tout arrangé...

    J'ai tu mettre un AntiFreeze et le logiciel est un peu ralenti.. (voir bcp) mais c pas grave!

    Merci bcp :p

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Client/Serveur] Architecture Client-serveur c'est quoi
    Par Layla dans le forum Autres
    Réponses: 5
    Dernier message: 23/09/2008, 17h02
  2. [UDP] Architecture Client/Serveur
    Par Bob.Killer dans le forum Développement
    Réponses: 1
    Dernier message: 25/04/2008, 11h09
  3. Application avec architecture client/serveur
    Par loreleï85 dans le forum Développement
    Réponses: 4
    Dernier message: 09/05/2007, 08h16
  4. MySQL en architecture client/serveur
    Par KinF dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/09/2005, 22h10

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