Erreur 10055 sur TclientSocket [Résolu]

Aurel184 22 Messages postés dimanche 14 mars 2004Date d'inscription 9 juin 2010 Dernière intervention - 6 nov. 2007 à 22:08 - Dernière réponse : Aurel184 22 Messages postés dimanche 14 mars 2004Date d'inscription 9 juin 2010 Dernière intervention
- 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 ?
Afficher la suite 

3 réponses

Répondre au sujet
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 8 nov. 2007 à 18:03
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de WhiteHippo
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 8 nov. 2007 à 17:56
0
Utile
Bonsoir,

Peut être un début de solution ici?

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Commenter la réponse de WhiteHippo
Aurel184 22 Messages postés dimanche 14 mars 2004Date d'inscription 9 juin 2010 Dernière intervention - 10 nov. 2007 à 20:06
0
Utile
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).
Commenter la réponse de Aurel184

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.