Tcp client indy onWork

Signaler
Messages postés
13
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
30 mai 2005
-
Messages postés
29
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
15 avril 2005
-
ben voila en fait le but c de faire un client server tcp avec indy en fait le client envoi un message au server et le server envoi une reponse au client mais le client narrive pas a recevoir la reponse en question.

Apres divers test on c apercu d'un truc bizarre l'evenement onWork du client tcp n'est jamais declenche (un simple beep; cette commande n'est jamais executee).

Le but c que le client puisse recevoir nimporte quand des donnee que le server envoi.

Bon ben merci davance a tous ceux qui pourront nous aider...

La source du test est la http://kschn.free.fr/Client-serveur.zip.

Cordialement KschN et Fly57

4 réponses

Messages postés
29
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
15 avril 2005

ton archive zip est corrompue
je vais reuploader la bonne

- Fly -
Messages postés
29
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
15 avril 2005

c'est fait
http://kschn.free.fr/Client-serveur.zip
ça doit fonctionner maintenant

- Fly -
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Et voilà la réponse.
Le problème est connu avec la version 8.0.25.

Mais la solution existe. Lire les commentaires dans le code ci-dessous :
procedure TForm1.Button3Click(Sender: TObject);
begin
  with Client1 do
  begin
    //Déclenche l'évènement OnWorkBegin
    BeginWork(wmWrite, Length(Edit_msge.Text));
    //On effectue le travail normalement
    WriteLn(Edit_msge.Text);
    //Ok, c'est terminé alors on notifie les composants
    EndWork(wmWrite);
  end;
  ListBox1.Items.Insert(0, Edit_msge.Text);
end;

procedure TForm1.Client1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
  with ListBox1.Items do
    case AWorkMode of
      wmRead: Insert(0, Format('%d octets reçus', [AWorkCount]));
      wmWrite: Insert(0, Format('%d octets envoyés', [AWorkCount]));
    end;
end;

procedure TForm1.Client1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
  ListBox1.Items.Insert(0, 'Début de la transaction');
end;

Et là, ça marche impeccable.
Bonne nuit à toutes et à tous :kisses)
Messages postés
29
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
15 avril 2005

ok là ça marche nickel, j'ai ajouté Insert(0, Client1.ReadLn); apres le case dans le Client1Work et je reçois bien ce qu'envoi le serveur (des fois des petites repetitions, mais ça doit se regler :))
merci Delphiprog pour ton aide c'est super sympa :)

- Fly -