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:
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:
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 :)