Ping imprécis

astobelix Messages postés 4 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 8 septembre 2017 - 27 janv. 2015 à 11:16
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 27 janv. 2015 à 12:12
Bonjour,

je désire créer un programme qui testerai le ping vers 2 serveurs distinct et afficher le résultat dans la fenêtre ( je débute sur VB ) , j'ai bien créer mon programme mais lorsque je débute le test de Ping j'obtiens genre une valeur de "58ms" alors que lorsque je ping directement depuis le cmd j'ai un ping de "20ms" d'où peut venir ce problème ?

je vous donne le code en question :

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ip As String
        Dim sw As New Stopwatch

        If My.Computer.Network.Ping("eu.server.warface.com") Then

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

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim ip As String
        Dim sw As New Stopwatch

        If My.Computer.Network.Ping("us.server.warface.com") Then

            sw.Start()
            My.Computer.Network.Ping("us.server.warface.com")
            sw.Stop()
            Label2.Text = "elapsed time: " & (sw.ElapsedMilliseconds) & "ms"
        Else
            MsgBox("request timeout")
            Label2.Text = " Elapsed Time Not Available"
        End If

    End Sub

    Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click

    End Sub

    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click

    End Sub

    Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

    End Sub
End Class


Avez-vous une idée ?

Merci d'avance

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
27 janv. 2015 à 11:27
Bonjour,
L'affichage, déjà, "bouffe" à lui seul des milliseconds.
Mais l'évaluation d'une expression conditionnelle également.
Pour être moins imprécis, il faudrait au moins calculer la durée écoulée avant même de l'afficher, puis l'afficher.
Cela ne "réparera" toutefois pas les autres "fuites" (interventions des librairies de VB.Net, expression conditionnelles, etc ...)
0
astobelix Messages postés 4 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 8 septembre 2017
27 janv. 2015 à 11:34
Merci de ta réponse , je dois avouer que je suis quelques peu perdu ... Comment procéder concrètement pour calculer la durée avant l'affichage puis l'afficher ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 27/01/2015 à 12:29
Tu ne parviendras jamais, pour les diverses raisons que je t'ai exposées ("pollution" à divers niveaux) à déterminer la durée exacte d'exécution de ce ping (et encore moins en utilisant un langage évolué et donc interprété et donc faisant intervenir des fonctions diverses).
Tout ce que tu peux tenter, pour "coller" un peu moins mal à la durée réelle, c'est de calculer cette durée avant même ton instruction sw.Stop(). Mais tu n'auras ainsi fait que t' "approcher" moins mal de la réalité.

EDIT : si tu tiens à "mesurer" moins mal la durée "utile", il te faudra alors aller au plus près de ta machine (assembleur) et encore ... si vraiment capable de travailler en temps réel (comme les systèmes embarqués... dans les avions de chasse, par exemple ...)

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Rejoignez-nous