le 08-23-2012 04:08 AM
Bonjour,
Je suis sur le point de développer un outils pour lire toutes les adresses IP des machines thermiques connectées sur le réseau de mon entreprise.
Je travail sous labview 8.5 et 2011.
L'adresse de mon réseau est (par exemple) 192.16.62.X et le masque de sous réseau est 255.255.255.0.
J'ai une machine thermique à l'adresse 192.16.62.99 et une deuxième à l'adresse 192.16.62.98.
Ce que je voudrais, c'est d'envoyer ma requête et d'avoir en retour toutes les adresses IP de ces machines.
Merci de votre aide.
Cdlt,
PS: la requête permet à la machine de renvoyer du texte ("MachineX")
Résolu ! Accéder à la solution.
08-23-2012 09:22 AM - modifié 08-23-2012 09:27 AM
Bonjour Tomaks et bienvenue sur le forum de discussions de National Instruments.
Je ne sais pas quelle requète vous utilisez, cepandant j'ai réflechi à une solution sur la base d'un broadcast ARP suivi de pings.
Dans le code que je vous propose, j'effectue tout dabord une mise à jour de la table ARP, grace à l'appelle d'une commande système windows.
J'effectue ensuite un ping -a afin d'obtenir l'adresse IP et le hostname des machines trouvées. Est-ce celà que vous désirez ?
entrez dans la commande les trois premiers digits de l'adresse du réseau, par exemple 192.16.62 (en référence à votre exemple).
N'hésitez pas a poser les questions qui vous viendraient à l'esprit à propos de ce code.
NB : cela ne fonctionne que sur des systèmes windows en français.
Cordialement,
Vincent.O
National Instruments France
Été de LabVIEW 2014
12 présentations en ligne, du 30 juin au 18 juillet
08-23-2012 10:09 AM - modifié 08-23-2012 10:17 AM
Bonjour Vincent et merci de ta réponse rapide,
Je ne vais pas trop rentrer dans les détails de la requête, car elle est confidentielle (histoire de pognon 😉 ), par contre, ton vi est très intéressant et pourrait m'être très utile dans le futur.
Moi de mon coté, j'ai réalisé un petit vi qui ouvre et qui ferme toutes les connexions [192.16.72.0 jusqu'à 192.16.62.255]. Il fonctionne mais parfois il m'arrive d'avoir aucune réponse. Surement a cause de la lenteur des machines et de leurs utilisations en production.
Je t'ai mis en pièce jointe, le vi allégé de la requête. Si tu pouvait y jeter un oeil et me dire s'il ne présente pas de grands défauts?
NOTE: J'ai oublié de mentionner dans mon post précédent, le fait que je dois scanner uniquement sur le port 10001.
Cdlt,
le 08-23-2012 10:29 AM
c'est une méthode intéressante, je ne saurais pas juger les performances.
d'un coté nous avons un brodcast + le nombre de pings correspondant au nombre de machines (taille du ping réduite au minimum)
de l'autres les ouvertures-fermetures de connexion TCP...
vous vérifiez 255 adresses mais vous ne pouvez en occuper physiquement que 254 (de 1 à 254, inclus), ça fait un tour de boucle en moins ![]()
j'ai simplement une petite question, dans la première boucle for, à quoi sert l'addition 0+ i sachant que l'on pourrait se contenter de... i uniquement ![]()
ou alors j'ai mal saisi quelque chose ![]()
il y a également une porte logique "NON" qui est à mon sens inutile, juste avant votre structure condition. Si vous permuttez les codes des fenètres "vrai" et faux" vous pouvez la supprimer.
mais ce sont deux petits détails qui ont peu d'influence sur les perfs
amicalement,
Vincent.O
National Instruments France
Été de LabVIEW 2014
12 présentations en ligne, du 30 juin au 18 juillet
le 08-24-2012 02:16 AM
Salut vincent,
L'addition 0 + i sert justement à insérer un offset sur l'adresse physique. Comme tu la dis, on ne peut occuper physiquement que les adresses allant de 1 à 254 inclus.
De plus, l'opérateur inversion était la pour rien, j'avoue que je ne sais pas pourquoi je l'ai mis là ^^.
Si je devais revenir sur les performances, le programme ne marche pas souvent. De mémoire, cette méthode ne fontionner pas sous labview 8.5. Avec labview 2011, le problème n'est plus aussi fréquent (mais il existe quand même), ils ont du régler le problème entre temps ^^ et cela peut me poser un petit soucis, si je dois lancer mon apllication et que je n'arrive pas a détecter la machine sur le réseau. J'imagine pas la tête de l'opérateur :).
Cdlt,
08-24-2012 03:26 AM - modifié 08-24-2012 03:29 AM
Bonjour Tomaks,
coté performance, votre solution utilise des protocoles plus haut niveau (TCP) que celle proposée (ARP + ICMP). De mon coté ça a bien fonctionné, mais cela a été beaucoup plus long. Avez vous pu tester mon vi "findIP" sur votre propre réseau ?
Au final, disposez-vous d'une solution au problème initial ? si tel est le cas n'hésitez pas à indiquer que ce thread est résolu ![]()
Cordialement,
Vincent.O
National Instruments France
Été de LabVIEW 2014
12 présentations en ligne, du 30 juin au 18 juillet
08-24-2012 03:31 AM - modifié 08-24-2012 03:39 AM
Oui ça fonctionne, mais votre votre VI "findIP" est très lent par rapport au mien. Mais le mien n'est pas fiable à 100%. Je vais continuer à chercher une solution à mon problème encore un peu plus.
Le programme est lent, car il ne trouve pas de nom à toutes les machines présentes sur le réseau. Celles qui ont un nom sont traitées rapidement alors que les autres prennent un temps monstre (~5sec)
Cdlt,
le 08-24-2012 04:11 AM
J'ai réussit à résoudre le problème et de diminuer le temps. J'ai utilisé ARP et TCP. Arp pour sa rapidité et TCP pour scanner les ports 10001.
le 12-18-2012 01:05 PM
Bonjour
Je serai intéresser par vaux travaux sur le scan d adresse ip
Mais je travaille sur lab 2010
et vaux VI ne peuve pas s ouvrir pourrie vous me les recompiles merci
le 12-19-2012 02:31 AM
Bonjour,
Je te joins le VI en version 2010.
Cdlt,