évènements Sockets très, très mais alors très lents...

Résolu
neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 - 21 avril 2005 à 12:06
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 21 avril 2005 à 23:50
Bonjour à tous,

J'ai un problème très bizarre avec mon application et je voudrais savoir si qqun s'est déjà retrouvé dans une situation similaire.

J'ai une application qui est en dialogue constant avec plusieurs appareils (env. 230), pour échanger des données avec ces appareils j'utilise des TClientSocket.

Au démarrage de l'appli j'ouvre tous mes Sockets "MonSocket.Open". Dans cette phase de tests, toutes les adresses IP des machines que j'ai entrées sont factices (Bref on essaie de se connecter à des machines qui n'existent pas).

Normalement dans les 20 secondes qui suivent je devrais recevoir un évènement du socket. Soit "OnConnect" soit "OnError", or je les reçois, mais petit à petit. C'est à dire que mes sockets répondent 5 par 5 ou 10 par 10 à des intervalles de quelques secondes. Ce qui fait que ça prend énormèment de temps pour avoir l'intégralité des réponses des machines...

Je pensais avoir une erreur dans mon code, mes ouvertures de sockets ou mes déclarations mais j'ai découvert autre chose. J'ai lancé mon programme depuis un autre poste que le mien et ça marche !!! Je reçois toutes les réponses en même temps.

Mon poste est sous XP, j'ai essayé avec un autre poste XP puis un WinServer 2003 et la ça marche.

J'ai tout essayé entre les paramètres réseaux, Update windows, anti-virus...

Si qqun à déjà eu une erreur dans le genre merci de me le faire savoir.

Merci d'avance
Nelson

2 réponses

neo557 Messages postés 34 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 30 août 2006 1
21 avril 2005 à 16:52
Bon j'ai trouvé la solution...

ça fait un peu bête de répondre soi-même à sa question mais c'est pour éviter que qqun perde du temps à y répondre.

Le problème ne vient pas de l'appli ou de la façon don j'ouvre mes sockets mais bien du système d'exploitation lui-même.

Le fait est que j'ai installé le service pack 2 de Microsoft XP sur mon poste, ce que j'ignorais c'est que le SP2 de XP possède une routine qui limite l'ouverture des ports sur le poste (pour éviter les virus qui ouvrent des ports par random). Donc ATTENTION si vous développez un logiciel pour Windows XP SP 2, vous ne pourrez ouvrir que 10 ports à la fois (les autres s'ourvriront mais ça prendra un temps fou).

Mais il existe une parade à cela, il faut modifier directement le fichier "tcp.sys". Pour se faire il faut utiliser un petit logiciel gratuit nommé "xp anti-spy" qui permet de repousser la limites des connexions jusqu'à 500 ou infini même.

le logiciel se trouve ici :
http://xp-antispy.org/?lang=en&option=com_remository&Itemid=26

Voilà j'éspère que ça aidera qqun.

PS : Avant d'effectuer cette manipulation vérifier que l'erreur vient du service pack 2. Quand c'est le cas, un message apparait dans la rubrique système de l'observateur d'évènements. Voici le message :
"TCP/IP a atteint la limite de sécurité imposée sur le nombre de tentatives de connexion TCP simultanées." ID de l'évènement : 4226

Si vous n'avez pas ce message dans l'observateur d'évènemennts ne réaliser pas la manipulation que j'ai décrite ci-dessus.

Nelson
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
21 avril 2005 à 23:50
Merci pour ces précieuses infos.


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
<
0
Rejoignez-nous