Bonjour,
J'ai développé depuis plusieurs années un logiciel client - serveur avec Delphi 2007 et le Indy 10 intégré comme protocole de communication.
Les composants sont de type IndCs:TIdTcpClient; sur le logiciel client et IndSrv: TIdTCPServer;
Depuis quelque temps je constate une déconnexion intempestive et aléatoire (Connexion reset by peer) sur un client alors que sur le serveur correspondant il ne se passe rien, pas de message d'erreur, le serveur n'est pas planté.
Cela concerne une trentaine de postes sur 6000 postes connectés et, les serveurs étant hébergés, il y a de multiples firewall entre le client et le serveur.
Il semblerait que le paramètre keepalive soit à false sur les sockets client (mais c'est vrai depuis toujours) et ma question est la suivante :
Comment faire pour le mettre à true au moment de la connexion ?
Voici la création du composant client :
et son initialisation (ServerPort et ServerName) sont des paramètres choisis par l'utilisateur selon le serveur auquel il se connecte)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 IndCs:=TIdTcpClient.Create(Nil); WITH IndCs DO BEGIN OnConnected:=IndCsConnected; OnDisconnected:=IndCsDisconnected; END;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 IF Length(ServerName)>0 THEN WITH IndCs DO BEGIN Port:=ServerPort; Host:=ServerName; Connect; Application.ProcessMessages; EXCEPT Ok:=False;Alerte(MtWarning,MsgConnexion+ServerName+MsgImpossible,False);END; Ok:=Connected; END ELSE Ok:=False; END; ConnecteAuServeur:=Ok; END;
Partager