Buenas! Estoy aprendiendo Python y estoy con el tema de los sockets, he
creado un servidor y cliente para enviar archivos. Me he dado cuenta que en
archivos grandes cuanto mas pasa el tiempo mas lenta se hace la recepción
de la información, ¿alguna sugerencia por qué pasa y como se podría evitar?
mi codigo:

server:
=============================================================================================
elif b'\F' in data: # peticion de archivo para ser descargado
transmitido = data.rstrip(b'\F')
comparte_dir = os.path.join(os.getcwd(), 'compartir')
print(os.path.join(comparte_dir, transmitido.decode()))
filesize = os.path.getsize(os.path.join(comparte_dir, transmitido.decode()))
print("TAMAÑO: {}".format(filesize))
with open(os.path.join(comparte_dir, transmitido.decode()), 'rb') as f:
self.socket.send(struct.pack('!I', filesize))  # enviamos en los primeros
4bytes el tamaño del archivo
numero_bytes = self.socket.sendfile(f)
                                        # data = f.read(8192)
# numero_bytes = len(data)
# self.socket.send(data)
# while data:
# data = f.read(8192)
# self.socket.send(data)
# numero_bytes += len(data)
                                print(numero_bytes)

cliente:
===============================================================================================
with open(archivo, 'wb') as f:
                        buf = socket_cliente.recv(4)  # cabecera con elt
amaño del archivo
                        filesize = struct.unpack('!I', buf)
                        print("filesize : {}".format(filesize))
                        filesize=filesize[0]
                        buf = b''
                        tiempo_inicio = datetime.datetime.now()
                        print(tiempo_inicio.strftime('%H:%M:%S'))
                        while len(buf) < filesize:
                            to_read = filesize - len(buf)
                            buf += socket_cliente.recv(262144 if to_read >
262144 else to_read)  #8192 1024*8 o 4096 1024*4
                            updt(filesize, len(buf))  # barra de progreso
                        f.write(buf)

---------------------
Muchas Gracias y un saludo
_______________________________________________
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es

Responder a