Bonjour à tous,
J'ai une connection TCP/IP indy avec TIdTCPServer et client.
Sur le serveur, je lance mon application: OK
Sur le client je lance mon application: OK
J'envoie quelques données: OK
Sur le client je déconnecte la communication: OK
Sur le client, je veux la relancer: Impossible !
Je veux fermer le programme coté Serveur: Violation d'adresse
Sur le serveur, il rentre dans l'evenement Disconnect() une fois que le client a déconnecté et ne veut plus faire de connect ensuite.
Voici mon code coté client:
<!-- BEGIN TEMPLATE: bbcode_code -->
procedure TfrmMain.ouvrirTCP;
begin
fermerTCP;
tcpCMain.Host := txtIp.Text;
tcpCMain.Port := numPort;
try
tcpCMain.Connect;
except
SetInfo('Impossible d''ouvrir le port TCP');
end;
end;
end;
procedure TfrmMain.envoyerTCP(ligne: String);
begin
if (tcpCMain.Connected) then
tcpCMain.Write(ligne);
end;
procedure TfrmMain.fermerTCP();
begin
if (tcpCMain.Connected) then
tcpCMain.Disconnect;
end;
<!-- END TEMPLATE: bbcode_code -->Et coté Serveur:
<!-- BEGIN TEMPLATE: bbcode_code -->
Code :
procedure TfrmMain.tcpSMainConnect(AThread: TIdPeerThread);
begin
mmoMain.Lines.Add('Connecté au '+AThread.Connection.Socket.Binding.PeerIP);
tcpSMain.Bindings.Clear;
tcpSMain.Bindings.Add.IP := AThread.Connection.Socket.Binding.PeerIP; // IP de l'autre PC
end;
procedure TfrmMain.tcpSMainExecute(AThread: TIdPeerThread);
var
Line: String;
begin
While AThread.Connection.Connected do begin
Line := AThread.Connection.Readln;
mmoMain.Lines.Add(Line);
end;
end;
procedure TfrmMain.tcpSMainDisconnect(AThread: TIdPeerThread);
begin
mmoMain.Lines.Add('Déconnecté');
end;
<!-- END TEMPLATE: bbcode_code -->
Qu'est ce qu'il se passe ?
[;)] David, à VERSAILLES
http://www.gentag.fr