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 :
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
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;
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![]()
Partager