navegador .net ¿alguien me ayuda con ping(dir,count)?

Iniciado por ABDERRAMAH, 7 Enero 2010, 19:04 PM

0 Miembros y 1 Visitante están viendo este tema.

ABDERRAMAH

Quiero hacer un pequeño navegador basado en vb.net que con un timer haga ping al server del que viene la web que estás viendo, y me responda con el retardo en ms (si es posible, me vale con un si o no, si recibe o no). El navegador está casi acabado, de hecho escribo ésto desde él. Pero la funcion :

ping(DIR, 1)

me responde siempre con true, por lo que creo que sólo responde con true cuando envia el ping, independientemente de si éste llega o no. ¿tengo que usar otra funcion para ésto? éste es el código que se ejecuta cuando el objeto web1 ha cargado una nueva página:

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles

Web1.DocumentCompleted
        Dim DIR As String
        DIR = TextBox1.Text
        INFO.Text = "ping tiene nuevo objetivo"
        TextBox1.Text = Web1.Url.AbsoluteUri
        STATE.Text = "pagina cargada"
     
    If ping(DIR, 1) Then
          Else
              STATE.Text = "no se pudo enviar ping"
              NotifyIcon1.BalloonTipText = "no hay ping"
              NotifyIcon1.Visible = True
          End If
     
  STATE.Text = CStr(Web1.DocumentTitle)
  Me.Text = CStr(Web1.DocumentTitle)
  ComboBox1.Items.Add(Web1.Url.AbsoluteUri)
  minitext.Text = "mostrando: " & CStr(Web1.Url.AbsolutePath)
End Sub


Ésto me interesa simplemente porque uso wifi y me parecía una buena idea añadir esa funcionalidad al navegador (que usa el motor iexplorer) ¿Alguien que me sepa ayudar?

Me valdria con que me dieran una función que mande ping y responda si recibe respuesta o no.

Shell Root

Quieres hacer un PING a la Web que vas a entrar, para verificar si hay conexion a internet o para ver si la web esta OnLine

http://www.elguille.info/colabora/puntonET/ar_PingVBNET.htm
ó
Código (vbnet) [Seleccionar]
    Imports System.Net

    Public Function funConexion() As Boolean
        Dim Req As HttpWebRequest = WebRequest.Create("http://foro.elhacker.net")
        Dim res As System.Net.HttpWebResponse

        Try
            Req = DirectCast(System.Net.WebRequest.Create("http://foro.elhacker.net"), System.Net.HttpWebRequest)


            res = DirectCast(Req.GetResponse(), System.Net.HttpWebResponse)

            Req.Abort()

            If res.StatusCode = System.Net.HttpStatusCode.OK Then
                Return True
            Else
                Return False
            End If
        Catch
            Return False
        End Try
    End Function


Saludos!
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

ABDERRAMAH

#2
es porque a veces me caigo del wifi y no me doy cuenta hasta que cargo una página. Si la página no hace ping pero carga, pues no pasa nada, es para cuando entro, por ejemplo en elhacker y me hace ping, saber que si deja de hacer ping estoy caido. O sea, solo necesito que me avise cuando el ping no llega, hace un ping cada tres segundos.

Ostia, el de elguille.info es mucho code, quiero que sea ligero, me quedo con tu función a ver.

ABDERRAMAH

Siiiii, ya lo siento por autoresponderme.Me va perfecto con unas modificaciones. aunque me laguea bastante cuando no consigue conectar. He intentado meterlo en un proceso de fondo, pero no estoy seguro de que sea así. la función ha quedado así, aunque me gustaría optimizarla o pasarla a segundo plano:

Public Function funConexion(ByVal DIR As String) As Boolean
        Dim Req As HttpWebRequest = WebRequest.Create(DIR)
        Dim res As System.Net.HttpWebResponse
        If Not BackgroundWorker1.IsBusy Then
            BackgroundWorker1.RunWorkerAsync()
            Try
                Req = DirectCast(System.Net.WebRequest.Create(DIR), System.Net.HttpWebRequest)
                Req.Timeout = 5000
                res = DirectCast(Req.GetResponse(), System.Net.HttpWebResponse)
                Req.Abort()
                If res.StatusCode = System.Net.HttpStatusCode.OK Then
                    Return True
                    Exit Function
                Else
                    Return False
                    Exit Function
                End If
            Catch
                Return False
                Exit Function
            End Try
            BackgroundWorker1.CancelAsync()
        End If
    End Function