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