Cliente FTP asíncrono

by Valeriano Tortola 7. octubre 2007 11:33

Este es un (largo) ejemplo de como crear un cliente FTP asíncrono que gestione múltiples descargas de forma paralela. En este modelo, generalmente la lógica de la aplicación suele estar compuesta por métodos estáticos, pero se añade un objeto de estado (objectState) que realiza el seguimiento de la tarea durante las fases de la aplicación, el estado de la tarea puede notificarse mediante eventos por cambio, temporizados ó devolver el mismo objeto de estado para su seguimiento externo.

En este caso, he optado por devolver el propio objeto de estado pero protegido con una interfaz para que solo determinados miembros puedan ser accesibles y solo para lectura, el final de la tarea se indica con un evento que trae el mismo tipo de objeto. Guardar el objeto de estado y monitorizarlo ó simplemente esperar al evento de fin... queda a la libre elección.

Mas...

Tags: , , , , ,

.NET 2.0 | C# 2.0

Medir la velocidad de un Stream

by Valeriano Tortola 28. septiembre 2007 20:46

Cosilla curiosa que nunca había hecho antes, medir la velocidad de lectura de un Stream, por ejemplo para saber a que velocidad en Bytes/s descargamos de un NetworkStream, ó de un FtpDataStream, ó para saber como de rápido lee nuestro disco duro ... ya sea con fines meramente estadísticos ó para encontrar el tamaño de buffer adecuado ... Es un procedmiento muy sencillo, se trata de dividir los bytes descargados entre los milisegundos transcurridos (cuantos bytes por milisegundo) y multiplicarlo por 1000 (un segundo). Para ello nos apoyamos en la clase para realizar mediciones de tiempo con precisión, StopWatch.

Mas...

Tags: , ,

.NET 2.0 | C# 2.0

Enviar un Stream por eMail

by Valeriano Tortola 7. septiembre 2007 23:02

Siguiendo con lo de enviar un archivo por eMail, puede ser que lo que queramos enviar no este en el sistema de archivos, si no que este en la memoria de nuestro programa. Un ejemplo de esto es que exportemos el contenido de un DataGridView a formato Excel ó hayamos dibujado un gráfico con GDI+ ... ó cualquier cosa que se os ocurra ... y lo queramos enviar por eMail como archivo adjunto, al igual que enviar un Stream por FTP, enviar un Stream como archivo adjunto también pude ser muy útil.

Ahí va un sencillo ejemplo:

Mas...

Tags: , ,

.NET 2.0 | C# 2.0

Descargando un fichero por FTP

by Valeriano Tortola 6. septiembre 2007 15:16

Siguiendo con el tema de Enviar un archivo por FTP y Enviar un Stream por FTP , vamos ahora con la descarga. También nos puede ser útil poder descargar archivos por FTP, para cosas como descargar copias de seguridad de un servidor ó realizar la copia en si misma, descargar archivos de servidores de forma sencilla y con autenticación, etc .. etc...

Ahí va un sencillo ejemplo:

Mas...

Tags: , , ,

.NET 2.0 | C# 2.0

Enviar un Stream por FTP

by Valeriano Tortola 2. septiembre 2007 18:50

Siguiendo con el artículo sobre como enviar un archivo por FTP, no siempre lo que queremos enviar esta ya materializado en el sistema de archivos, puede ser también un archivo que estemos generando en memoria, como un reporte, un archivo .pdf, .xml .. etc.. etc.. y tener que guardarlo en disco para luego poderlo enviar por FTP es molesto, asi que aquí va un ejemplo de como enviar el contenido de un Stream (ó derivado) a un FTP:

Mas...

Tags: , , ,

.NET 2.0 | C# 2.0

Enviar un archivo por eMail

by Valeriano Tortola 1. septiembre 2007 18:18

Siguiendo la línea del artículo anterior donde explicaba como subir un archivo vía FTP, voy a mostrar ahora como enviar un archivo vía email con las clases contenidas en System.Net.Mail. Esta funcionalidad, puede ser más útil para informar de excepciones en una aplicación instalada en el cliente, comunicar alguna eventualidad, etc.. etc…

Ojo que esta no es la implementación de un servidor SMTP y que solo actúa como cliente de correo en modo de envio, por lo que es necesario que tengamos una cuenta de correo y un acceso SMTP (Hotmail no tiene SMTP gratuito, Gmail si, ó usa tu propio servidor si lo tienes).

El ejemplo es bastante claro y sencillo:

Mas...

Tags: , ,

.NET 2.0 | C# 2.0

Enviar un archivo por FTP

by Valeriano Tortola 1. septiembre 2007 09:00

Puede resultar muy útil que nuestra aplicación pueda enviar los resultados de sus acciones o depositarlos en un servidor FTP, nos puede servir tanto para enviar periódicamente archivos de log, resultados, estadísticas o cualquier otro tipo de fichero.

Este es un sencillo ejemplo de una función que envia un archivo por FTP a un determinada ruta remota:

Mas...

Tags: , ,

.NET 2.0 | C# 2.0