Ping adresse ip tronqué de beckhoff saisis dans un fichier INI

Résolu
guillaumeIA Messages postés 12 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 3 septembre 2009 - 17 juil. 2009 à 09:59
guillaumeIA Messages postés 12 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 3 septembre 2009 - 20 juil. 2009 à 08:18
Bonjour,
J'aimerai trouver une solution a mes problèmes qui est le suivant:

Je possède une fichier ini avec l'adresse ip a 6 nombres xxx.xxx.xx.xxx.x.x
Je ne peu pinguer que sur les 4 premier nombres.
j'aimerais récupérer cette adresse ip du fichier ini, cela ça marche dans mon programme et tronquer cette variable pour récupérer "xxx.xxx.xx.xxx"

voila mon code: " je pars ans l'optique que mon ip a été tronquer pour ce code"
fichier ini:
[ConfigurationLogiciel]
ip_adresse= 169.xxx.xx.xxx

' ping de l'adresse ip de l automate pour verifier qu'il est bien connécté
ip_adresse = PageParam.LireINI("ConfigurationLogiciel", "ip_adresse")
If ip_adresse.ToString = "" Then
MsgBox("contrôler l'adresse ip de la passerelle.")
Else

Dim value As Boolean = My.Computer.Network.Ping("ip_adresse") 'voir second problème à ce niveau
If value Then
MsgBox("Server pinged successfully.")
Else
MsgBox("Ping request timed out.")
End If
End If

Mon second problème:
Dans cette ligne de codes suivante Dim value As Boolean = My.Computer.Network.Ping("169.xxx.xx.xxx") , le ping marche uniquement si je saisis manuellement l'adresse ip par contre si je ramène cette ip du fichier ini via une variable alors
une erreur ping exception apparait. Dim value As Boolean = My.Computer.Network.Ping("ip_adresse")

en espérant que vous pourrez m'aider.

Cordialement

6 réponses

guillaumeIA Messages postés 12 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 3 septembre 2009
20 juil. 2009 à 08:18
Merci j'essayerai tout cela
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 juil. 2009 à 14:48
Salut
Pas clair du tout.
Tu nous dit avoir une série de 6 chiffres dans un fichier INI et l'exemple que tu donnes n'en a que 4.
Que faut-il comprendre ?
Quelle est ta question ?

Si tu récupères 6 chiffres séparés par 5 points, la solution que je verrais serait :
- Faire un Split de la chaine totale en utilisant le point comme séparateur
- Tu obtiendras alors un tableau de 0 à 5
- Redimensionne ton tableau de 0 à 3, ce qui aura pour effet de perdre les deux derniers termes
- Faire un Join pour recréer la chaine des 4 chiffres

Pour ta deuxième question, la réponse est évidente :
Dans Ping("ip_adresse"), "ip_adresse" est ici un texte, ce n'est pas la variable
--> Ping(ip_adresse.ToString)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
17 juil. 2009 à 15:23
Bonjour,

Ce que je comprends c'est que tu souhaite faire
[xxx.xxx.xx.xxx].x.x
--> Récupérer uniquement ce qui est entre les crochets.
Bien entendu, la position des crochets serait à établir, et le nombre de x varie entre 0 et 3 (ou 1 et 3)

Je te propose de travailler avec un RegExp (cela peut certainement se faire avec des fonction de 'Strings' mais j'aime tellement le RegExp ^^)
Bien entendu il faut faire l'import qui va bien (Projet/references/Microsoft VB Script Regular Expression 5.0)

Admetant que ton IP d'origine soit contenu par la variable string IP_o(_o comme original) et qu'on veuille que la nouvelle soit contenu dans IP_n (_n comme new)

    
Dim IP_n As String
Dim RE As New RegExp            ' instantiation du RegExp
    RE.MultiLine = False
    RE.IgnoreCase = True
    RE.Pattern = ".."

'Dans un premier temps, dire que '..' équivaut à un '.0.'
IP_n = RE.Replace(IP_o, ".0.")

'Dans un second temps, isoler les 4 premiers groupes de chiffres
RE.Pattern = "([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})"
Dim MC As MatchCollection   ' instantiation du resultat pour RegExp
Set MC = RE.Execute(IP_n)

If (MC.Count > 0) Then
    IP_n = MC(0)
Else
    'il y a un problème, on a pas trouvé
    '--> gestion d'erreur si besoin
End If


je l'ai pas testé, je te laisse le faire

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
17 juil. 2009 à 15:35
A, ^^ j'avais pas vu le post du dessus, le Split puis join est en effet une solution en 3-4 lignes tout aussi fonctionnelle

je voulai juste ajouter que (c'est peut être évident) que le redimensionnement doit se faire avec un Redim Preserve

En ce qui concerne le secon problème, je ne sais pas si ça vien de là mais vérifie que Ping("1.1.1.1") soit bien équivalent à Ping("001.001.001.001")

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2009 à 16:01
RE.Pattern = "([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})"

un bon début, mais cela autorise: 999.999.999.999

on pourrait limiter à 255.255.255.255 mais cela ne serait pas plus une IP valide...

plus tatillon, on dirait:

\b(?:[1-9]|1?\d{2}|2[0-5]{2})\.(?:(?:\d|1?\d{2}|2[0-5]{2})\.){2}(?:[1-9]|1?\d{2}|2[0-5]{2})\b

(repiqué )

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 juil. 2009 à 16:07
Version corrigée, même, pour autoriser par exemple 127.0.0.209

\b(?:[1-9]|1?\d{2}|25[0-5]|2[0-4]\d)\.(?:\d|1?\d{2}|25[0-5]|2[0-4]\d)\.(?:\d|1?\d{2}|25[0-5]|2[0-4]\d)\.(?:[1-9]|1?\d{2}|25[0-5]|2[0-4]\d)\b

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Rejoignez-nous