Sockets

lars lars en telefonica.net
Mie Ene 26 20:07:44 CET 2005


Ernesto Revilla wrote:

>
> Se recomienda recibirlo en bloques, y deja la oportunidad que tu 
> programa haga otras cosas, como visualizar un indicador de progreso. 
> Use tamaño de bloques no muy grandes como 1024 o algo así. Los bloques 
> a nivel ethernet suelen ser 1500, pero protocolo TCP ya lo abstrae. 
> Aún así no usuaría bloques más grandes de 65k. Haz varias pruebas. Un 
> bloque de 4k tb puede ser bueno.
> Erny
>
> Jesus Cea escribió:
>
>> Cuando haces un "recv" te puede dar desde 1 byte hasta los 40960 
>> bytes enviados originariamente. La cifra no está predeterminada y 
>> depende de muchos factores, incluyendo el sistema operativo, la 
>> calidad de la red y su velocidad, congestión, tiempo entre "recv's", 
>> etc.
>>
>> Es decir, cuando haces un "recv", puedes recibir menos datos de los 
>> esperados. En ese caso debes hacer otro, las veces que sea preciso.
>>
>>
>> lars wrote:
>>
>>> Jesus Cea wrote:
>>>
>>>> Una llamada a "send" puede necesitar múltiples llamadas a "recv".
>>>>
>>> creo que no termino de entenderte, un send de 40960 bytes tiene que 
>>> ser recibido en 10 recv de 4096 por ejemplo? te refieres a eso? la 
>>> verdad esque ando un poco perdido con este tema y no encuentro un 
>>> tutorial sobre sockets claro ni ningun ejemplo sobre lo que pretendo 
>>> hacer.
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en aditel.org
>>> http://listas.aditel.org/listinfo/python-es
>>>
>>>
>>
>
>
Al final lo solucione de la siguiente forma:

tamOrig = al tamaño del archivo en el servidor
tamDest = 0

y partir de ahi haciendo "recv" en bloques de 4k hasta que ambas sean 
iguales, con su barra de progreso y los indicadores de "Transferido" y  
"Restante", lo unico que me quedaria por hacer es poder medir la 
velocidad del envio y el tiempo restante, lo segundo tengo una idea de 
como hacerlo, mas o menos seria recoger el tiempo consumido para 
transferir 100k y luego hacer el calculo, pero lo de la velocidad de 
envio no tengo ni idea




Más información sobre la lista de distribución Python-es