Comment éviter : Erreur 10055 No buffer space available

neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 - 19 mars 2004 à 13:53
neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 - 22 mars 2004 à 08:47
Bonjour à tous,

J'ai un problème à vous soumettre :

J'ai crée un logiciel composé de plusieurs sockets (Clients & Serveurs) et si je le laisse tourner un moment l'erreur 10055 va faire planter mon programme. J'ai une gestion d'erreurs elle n'aparaîtra pas à l'écran, je veux dire par là que ce n'est pas l'erreur en elle même qui fait planter le programme mais ce qu'elle occasione...

Dans mon logiciel je suis souvent obligé de faire des "Socket.Open" est-ce que faire des Socket.Open sans faire de Socket.Close avant peut causer cette erreur ?

J'ai peur d'avoir quelques problèmes d'allocation de mémoire avec mes sockets si qqun connaît le moyen de réparer cela merci de me répondre.

Nelson

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
19 mars 2004 à 23:11
Voici une première réponse qui devrait donner satisfaction ou, au moins, mettre sur une piste : Hummingbird - host explorer.
May Delphi be with you
0
neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 1
22 mars 2004 à 08:47
DISCUSSION
Receive the error "Socket RECV error 10055" on connection attempts.

RESOLUTION

This is a problem with the stack buffer size and some TCP/IP stacks. To resolve this problem simply add the following line to your HOSTEX.INI file in the [System.Settings] section :

Max Winsock Receive Size = 4096

ACTION

For further information please contact Hummingbird Technical Support

Cette solution ne va t'elle pas simplement ralentir le processus au lieu de le stopper ? Car il est vrai qu'allouer plus de mémoire au socket me permettra de tenir plus longtemps mais mon logiciel est un service qui va tourner 24h/24h...

J'ai chercher un peu et j'ai découvert que le problème venait du fait qu'on ne doit pas faire de Open sur un socket si l'on a pas reçu de réponse de l'Open précèdent. Or j'ai placé un flag que je met a true à chaque fois que je fais un Socket.Open et que je met à False à chaque Socket.Close, Socket.OnConnect et Socket.OnError... Problème chaque fois que je fais Socket.Open je vais dans Socket.OnError, donc je réinitialise mon flag et malheureusement au bout d'un moment ça va de nouveau replanter avec l'erreur 10055...

Nelson
0
Rejoignez-nous