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.
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
ó
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!
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.
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