Recuperer ip par dns et ping en milisecondes

Résolu
Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013 - 14 déc. 2011 à 21:27
 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 ? :-)

5 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
14 déc. 2011 à 23:07
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
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
14 déc. 2011 à 23:40
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.
3
Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013
14 déc. 2011 à 23:51
En effet, merci beaucoup à vous deux, vos réponses m'ont beaucoup aidé.
0
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
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
14 déc. 2018 à 02:28
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 !
0
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
0

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

Posez votre question
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
0
Rejoignez-nous