Recuperer ip par dns et ping en milisecondes [Résolu]

Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
- - Dernière réponse :  Olivier - 14 déc. 2018 à 13:39
Bonjour à tous, j'essaie actuellement de récupérer une adresse ip par un dns et récuperer le ping en ms.
Pour le ping cela a été chose facile mais concernant l'adresse ip je me vois obliger de demander votre aide.

Dans mon application, j'utilise un :

-timer (timerping) réglé à 1000 ms.
-une listbox (listboxping) qui contiendra les informations (ping, dns, ip)
-une textbox (textboxping) pour tapper l'adresse internet (dns)
-deux boutons pour lancer et arrêter le procéder.

Voici mon code :

         Dim DNS As String = TextBoxPing.Text
         Dim IP As System.Net.IPAddress() = System.Net.Dns.GetHostAddresses(DNS)
         'Exemple : textboxping.text = www.google.com
         ListBoxPing.Items.Add("Ping from " & TextBoxPing.Text & " (IP:" & IP.ToString & ")" & " = " & GetPing(TextBoxPing.Text) & " ms")


Mon problème c'est que je n'arrive pas à afficher l'addresse ip, l'application me donne cette ligne :

Ping from www.google.com (IP:System.net.IPAddress[]) 31 ms


Quelqu'un aurait une solution s'il vous plait ? :-)
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
14323
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
15 décembre 2018
3
Merci
Bonjour,

Un nom DNS peut cacher plusieurs adresses IP.
Si tu ne veux que les ips V4, vérifie si le type est System.Net.IpAddress, pour IpV6 : System.Net.IpAddressV6 (je crois).

Ensuite, un .ToString pour récupérer au format texte.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site

Dire « Merci » 3

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de NHenry
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
3
Merci
En effet NHenry a raison,

Comme tu le montre toi même dans ton code le paramètre retourné par GetHostAddresses est un tableau.

Dim IP As System.Net.IPAddress() = System.Net.Dns.GetHostAddresses(DNS)

le plus approprié est donc :

Dim IPs As System.Net.IPAddress() = System.Net.Dns.GetHostAddresses(DNS)
For Each IP As System.Net.IPAddress in IPs
    ListBoxPing.Items.Add("Ping from " & TextBoxPing.Text & " (IP:" & IP.ToString & ")" & _
    " = " & GetPing(TextBoxPing.Text) & " ms")
Next

ou encore
Dim IPs As System.Net.IPAddress() = System.Net.Dns.GetHostAddresses(DNS)
If IP.length > 0 Then
    ListBoxPing.Items.Add("Ping from " & TextBoxPing.Text & " (IP:" & IP(0).ToString & ")" & _
    " = " & GetPing(TextBoxPing.Text) & " ms")
End If

NHenry la classe IPAddress gère nativement les IPv6 il me semble.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Dire « Merci » 3

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de Mayzz
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
0
Merci
En effet, merci beaucoup à vous deux, vos réponses m'ont beaucoup aidé.
Commenter la réponse de Sentynel
0
Merci
Bonjour,

Avec près de 7 ans de décalage, j'aimerais avoir une information ...
Je travaille sur Visual Studio 2015 et 2017 et la fonction GetPing n'est pas reconnue ...
Est-ce normal ? Par quoi faut-il la remplacer ?
Par avance merci de votre attention
vb95
Messages postés
1728
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
Bonjour
A mon avis GetPing est une fonction que l'auteur a créée pour savoir le temps en millisecondes pour la réponse au Ping ( c'est le temps entre le Timer.Start et le Timer.Stop pour mesurer le temps du Ping ).
Ce n'est pas une fonction standard de visual Studio !
Bonjour vb95,

Merci de ta réponse.
Existe t'il une fonction permettant de récupérer cette information ?
Je dois faire un ping sur un ensemble d'adresses IP et calculer le delta entre le timer.start et timer.stop ... est-ce vraiment fiable ?
Par avanc merci
Commenter la réponse de Olivier
0
Merci
Je viens de trouver un bout de code permettant de faire ce que je recherchais :
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim sw As New Stopwatch

        If My.Computer.Network.Ping("192.168.1.240") Then

            sw.Start()
            My.Computer.Network.Ping("192.168.1.240")
            sw.Stop()
            Button3.Text = "elapsed time: " & (sw.ElapsedMilliseconds) & "ms"
        Else
            MsgBox("request timeout")
            Button3.Text = " Elapsed Time Not Available"
        End If
    End Sub


Il ne reste qu'à placer un bouton Button3 sur une form, coller ce code, vérifier l'adresse IP et tester !!

Voici le lien où je l'ai trouvé :
https://codes-sources.commentcamarche.net/forum/affich-10043106-ping-imprecis

Merci à tous
Commenter la réponse de Olivier

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.