Tcp client indy onWork

kschn Messages postés 13 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 30 mai 2005 - 28 mai 2004 à 22:52
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005 - 29 mai 2004 à 01:32
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

Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
28 mai 2004 à 23:25
ton archive zip est corrompue
je vais reuploader la bonne

- Fly -
0
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
28 mai 2004 à 23:52
c'est fait
http://kschn.free.fr/Client-serveur.zip
ça doit fonctionner maintenant

- Fly -
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
29 mai 2004 à 00:42
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)
0
Fly57 Messages postés 29 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 15 avril 2005
29 mai 2004 à 01:32
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 -
0