• Publicidad

Promediar tiempo con sockets

Así que programas sin strict y las expresiones regulares son otro modo de hablar. Aquí encontrarás respuestas de nivel avanzado, no recomendable para los débiles de corazón.

Promediar tiempo con sockets

Notapor creating021 » 2006-05-02 15:30 @687

Hola gente!
Como puedo saber el tiempo que me toma bajar un archivo por Sockets?
Es decir, como lwp-download que te imprime el tiempo promedio que tomara descarquarse X archivo, pero por Sockets (Ya tengo media interfase http hecha, pero nesecito esto)
Gracias.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Publicidad

Notapor kidd » 2006-05-02 16:03 @710

Hola:

Te recomiendo que le heches un vistazo al módulo Time::HiRes
http://search.cpan.org/~jhi/Time-HiRes-1.87/HiRes.pm

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Promediar tiempo con sockets

Notapor Perl user » 2006-05-02 16:05 @711

creating021 escribiste:Hola gente!
Como puedo saber el tiempo que me toma bajar un archivo por Sockets?
Es decir, como lwp-download que te imprime el tiempo promedio que tomara descarquarse X archivo, pero por Sockets (Ya tengo media interfase http hecha, pero nesecito esto)
Gracias.


s/nesecito/necesito/
s/interfase/interfaz/
s/descarquarse/descargarse/

Bueno después de las correcciones anteriores, la manera en la que podrías calcular el tiempo aproximado es tomar el tiempo antes de iniciar la transferencia, y después de recibir la cantidad de bytes esperados. Al final solo calculas la diferencia de tiempos y listo.

Código: Seleccionar todo
my $before = localtime( time );
my $data = get_file(); # socket code...
my $time = localtime( time ) - $before;


Saludos,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor creating021 » 2006-05-02 16:45 @739

Perdon, que pena por lo de la ortografia.
Y gracias por las respuestas, pero no me explique bien, lo que quiero es hacer un motor http para un web browser y me diga tanto el porsentaje como el tiempo que tomara cargar la pagina y la descarga de archivos.
Realmente para hacer esto necesito saber el tamaño del archivo y la velocidad en la cual se trabaja.
print "Perdon por la molestia\n";
__END__
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor

Notapor Perl user » 2006-05-02 17:17 @762

Que tal,

Tu comentario si cambia totalmente el escenario. En el caso de HTTP no es TAN trivial pero tampoco TAN complejo. En el HTTP HEADER viene la longitud en bytes de la petición que hiciste, cuando leas del socket, leerás NBYTES ( te recomiendo un buffer de 16K) hacia el buffer que le indiques, lo que necesitas es ir checando cada segundo el contador de bytes que irás incrementando en cada llamada a sysread() y sacar el promedio/porcentaje.

Esto por supuesto, tiene que ser de manera concurrente, te recomendaría usar threads pero la implementación de threading en Perl es horrible, así que terminarás haciendolo con fork().

Lo que te recomiendo es... una vez que analices el header y obtengas la longitud del request, creas un proceso con fork, deja que el child process que creaste accese a el contador de bytes, y que el parent siga con la adquisición de datos, con esto cada que transcurra un segundo checas el contador y calculas el promedio/porcentaje, y también podrías calcular el tiempo restante de la transferencia, con la información obtenida.

Espero haberme dado a entender, Saludos.
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor creating021 » 2006-05-05 19:04 @836

Ya veo, muchisimas gracias.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor


Volver a Avanzado

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados