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:
Et coté Serveur:
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 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;
Qu'est ce qu'il se passe ?
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 TfrmMain.tcpSMainConnect(AThread: TIdPeerThread); begin mmoInfos.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 mmoInfos.Lines.Add('Déconnecté'); end;
Partager