jimy neutron
Messages postés490Date d'inscriptionmercredi 1 février 2006StatutMembreDernière intervention18 novembre 2016
-
Modifié par jimy neutron le 23/01/2015 à 12:08
Whismeril
Messages postés19144Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 6 septembre 2024
-
26 janv. 2015 à 09:13
Bonjour à tous,
Je dévellope une application en VB 2010 qui monitore la communication entre des automates, PC et serveurs sur un même réseau industriel (IPs Fixes).
Ce monitoring est basé sur des pings en boucle et affichage du résultat et du DNS lu, à partir d'une liste d'adresse IP.
Celle ci fonctionne bien, cependant, si ma liste comporte, par exemple, 255 adresses IP, sachant qu'il faut environ 1s pour une ping qui répond et 3s pour un ping qui ne répond pas, le test des 255 adresses prend au bas mot 255s soit 4.25mn.
Donc chaque adresse IP n'est testée que toutes les 4.25mn, ce qui limite l'efficacité de l'application, car on peut très bien perdre, puis retrouver la communication d'une adresse sans que l'application de s'en rende compte.
Auriez-vous une idée pour que toutes les adresses soient testées simultanément sur un cycle de quelques secondes?
L'utilisation de multi-Thread est elle envisageable? Nb d'IP = Nb Thread?
Whismeril
Messages postés19144Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 6 septembre 2024660 23 janv. 2015 à 14:08
Bonjour, je pense que c'est une piste à essayer au moins.
Alors peut-être pas un thread par ip, mais tu pourrais essayer d'en créer 2, 5, 10, pour voir ce que ça donne (temps d'éxécution, ressources système, etc..)
Je mettrais la liste des IP dans une list(of(T)) globale.
Le premier thread prend la première IP et la supprime de la liste et la teste.
Le second thread prend la nouvelle première IP et la supprime et la teste.
Etc....
Quand un thread a fini de pinger, il prend la première IP etc...
Quand il n'y a plus ip dans la liste on la recharge et on recommence.