Descargar archivos de la red.
Es común diseñar un proyecto donde se nos pida que bajemos archivos de la red y almacenarlos en algún medio de almacenamiento del ordenador. Sin embargo en muchas otras ocasiones es común bajar el mismo archivo cada cierto intervalo de tiempo, debido a que este se actualiza y tiene un contenido mas reciente, y es necesario sobrescribir el archivo descargado, pues bien aunque parezca sencillo de hacer, implementar este algoritmo requiere de practica. Existen dos formas de hacerlo y es lo que explicare.
Supongamos que se nos asigna la tarea de tomar captura de alguna cámara digital cada 30 segundos, sin embargo, el software que se encarga de tomar la captura y almacenar dicha imagen ya se encuentra echo, por lo tanto nuestro trabajo es solo tomar el archivo del servidor donde alojo esta imagen y visualizarla en alguna especie de contenedor gráfico (PictureBox).
El método clásico es usar el siguiente código:
Sub timer_1
Dim time As Integer
time = 0
If time <= 30 then
time = time + 1
else
My.Computer.Network.DownloadFile _
("http://www.tuServidoroIP.com/Imagenjpg", _
"C:\Monitoreo\Imagen.jpg")
time = 0
End If
End sub
Todo pareciera indicar que tenemos el problema resuelto, y en efecto así es. Sin embargo pensemos que cierto día nuestra conexión a internet pierde comunicación con el servidor por unos cuantos mili segundos, y supongamos que en ese intervalo de tiempo (entre la perdida de conexión) le correspondía a nuestro software actualizar tomar la imagen del servidor y posteriormente almacenarla y mostrarla.
¿Que ocurriría?
Pues bien, nuestro código es tan sencillo que carece de condiciones contra errores, y por lo tanto nos generaría un error y se saldría de la ejecución, de echo, seria la muerte si fuera para un empresa, y el software se colgara en un fin de semana.
¿Como solucionar el problema?
Pues bien, como bien dice el dicho: no hay mal que dure cien años...
No explicare a detalle el siguiente código, pues me tomaría mas tiempo explicarles el funcionamiento de cada sentencia, sin embargo, el lector tiene toda la libertad de experimentar e investigar.
Try
Dim wc As New System.Net.WebClient()
wc.DownloadFile("http://" & ip & "/Imagen.jpg", "C:\Monitoreo\Imagen.jpg")
Catch ex As System.Net.WebException
Dim response As System.Net.HttpWebResponse = ex.Response
End Try
Este código lo que hace, es omitir nuestro problema anterior, lo único que bastaría hacer es cambiar este fragmento de código por el anterior:
My.Computer.Network.DownloadFile _
("http://www.tuServidoroIP.com/Imagenjpg", _
"C:\Monitoreo\Imagen.jpg")Eh aquí nuestra solución, cabe mencionar que el código anterior puede reemplazar la imagen automáticamente, a diferencia del primer código que nos causaba error, a ese código tenemos que implementarle un algoritmo para borrar la imagen y volverla a escribir.
No hay comentarios:
Publicar un comentario