Erreur 10055 sur TclientSocket

Résolu
Aurel184 Messages postés 21 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 9 juin 2010 - 6 nov. 2007 à 22:08
Aurel184 Messages postés 21 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 9 juin 2010 - 10 nov. 2007 à 20:06
Bonjour,

j'ai développé un petit logiciel client serveur très simple. Un serveur et trois client. Les dialogues sont très simples. Le maître mot est légèreté et robustesse. Les clients essaient donc de se connecter très souvent jusqu'à ce qu'ils réussissent.

Le problème est qu'il arrive que le serveur se mette en veille (jamais les clients). Donc les clients peuvent passer plusieurs jours à essayer de se connecter en vain.

Au bout d'un moment les clients ont une erreur socket :

Windows socket error : Une opérationn'a pas pu être effectuée car le système ne disposait pas de suffisamment d'espace dans la mémoire tempon ou parce que la file d'attente était saturée (10055), on API 'connect'

Ca vient surement du fait que je ferme mal mon socket avant de réessayer de me connecter.

Je sais qu'il y a plusieur classes en Delphi pour gérer les socket. laquelle permet de gérer le plus proprement les connexions ? quelles sont les précautions à prendre pour être sur de fermer proprement un socket ? Pour le moment j'utilise des TclientSocket et des TServerSocket. en cas d'erreur de connexion sur le client, je fait un free et je le recree.... Est ce bien ?

2 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
8 nov. 2007 à 18:03
Autre piste Aurel184. Il faudrait garantir que si une demande de connexion est faite par un client, il faut attendre un résultat avant d'en effectuer une nouvelle. En d'autres termes, il ne faut pas autoriser de tentative de connexion tant que tu n'as pas reçu un OnConnect ou un OnError à ta précédente requete.

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
3
Aurel184 Messages postés 21 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 9 juin 2010 1
10 nov. 2007 à 20:06
Oui en effet mon timer relance la connexion si Socket.connected est à false. Mais il ne s'assure pas d'avoir reçu la réponse onError ou onConnect. Je vais faire les modifs et tester tout ça.

Merci. Le problème est que je ne saurai si ça marche que dans 3 ou 4 jours (temps pour que l'erreur arrive).
0
Rejoignez-nous