Open mVal919 opened 4 days ago
Hola, respecto a tus dudas:
El sistema propuesto permite la transferencia de más de un archivo (o mensaje) en simultáneo, tanto a través del uso de sockets como del correcto uso del formato codificación especificada en el enunciado.
El enunciado dice que el uso del identificador único queda a criterio del desarrollador, por lo que no tiene que ser siempre el mismo y se puede usar para lo que tú propones.
Puedes usar el método os.path.getsize(file_path)
. Más info aquí: https://www.geeksforgeeks.org/python-os-path-size-method/
Okay Sobre la 1, no me quedo muy claro. Me refiero a que si x ej el cliente tiene multiples threads funcionando para cada descarga que se quiera hacer, y el server tiene un thread para cada transferencia de datos que esta haciendo, como sabe el thread del servidor ahí para saber a que thread del cliente tiene que mandar la info? Me dijiste algo de sockets, pero no entendí muy bien como implementaría eso. Se pueden abrir multiples sockets por cliente? Porque ahí en teoría el server sabria pa adonde mandar las cosas
Si, puedes abrir múltiples sockets entre el cliente y el servidor. Alternativamente, puedes ayudarte del identificador único que se incluye cada chunk enviado para diferenciar entre distintos mensajes.
Encontré esto (https://www.reddit.com/r/learnpython/s/h49O8tvtvf) , y es lo único que he encontrado en realidad con respecto a lo de abrir múltiples sockets por cliente. Lo que se me había ocurrido era abrir el socket nuevo al momento de hacer la descarga, y de ahí hacer el manejo de los bytes entrantes. Pero como haría algo así? Osea, lo de manejar multipes sockets por cliente? Pq me imagino que no es tan simple como abrir el socket y listo
Prerrequisitos
(Marcar colocando una
X
entre los corchetes los ítems que ya hiciste, así:"[X]"
)Duda
Buenos días Tengo unas dudas con respecto al proceso de descarga.
Digamos que tengo threads puestos para manejar multiples descargas, y que las descargas, si se hacen una por una, funcionan correctamente. Mi pregunta es: si el cliente comienza a descargar dos archivos a la vez, sabe que thread debe recibir que paquete de bytes? Porque si no, los bytes de los archivos se mezclarían, y los archivos descargados serían inutiles finalmente.
Lo otro, el identificador tiene que ser el mismo para todos los archivos? O lo podemos usar para codificar información como nombre del archivo o cosas asi?
Finalmente, hay alguna manera eficiente de ver el 'largo' de un archivo? Porque mi metodo por el momento es guardar el archivo entero como un bytearray y hacer len(), y despues ir cortando del bytearray entero para mandar los paquetes, que para archivos mas grandes me imagino será muy ineficiente.
Eso. Muchísimas gracias!!