Estoy tratando de hacer un programa en Python que implemente conectores, cada cliente envía un archivo PDF y el servidor lo recibe y el título se cambia a "file_number.pdf" (es decir: file_1 .pdf). El problema que se presenta es que solo un cliente puede enviar un archivo con éxito. Cuando un segundo cliente intenta enviar el programa se bloquea. ¿Qué estoy haciendo mal y cómo puedo resolver mi código para permitir que N clientes (con N < 20) se conecten al servidor y transfieran archivos?Enviar un archivo a través de sockets en Python
Aquí está el código del servidor:
import socket
import sys
s = socket.socket()
s.bind(("localhost",9999))
s.listen(10) # Acepta hasta 10 conexiones entrantes.
sc, address = s.accept()
print address
i=1
f = open('file_'+ str(i)+".pdf",'wb') # Open in binary
i=i+1
while (True):
# Recibimos y escribimos en el fichero
l = sc.recv(1024)
while (l):
f.write(l)
l = sc.recv(1024)
f.close()
sc.close()
s.close()
Aquí está el código de cliente:
import socket
import sys
s = socket.socket()
s.connect(("localhost",9999))
f = open ("libroR.pdf", "rb")
l = f.read(1024)
while (l):
s.send(l)
l = f.read(1024)
s.close()
Para simplificar el código siempre uso un libro con el nombre de archivo "libroR.pdf", pero en el pleno el código es elegido por una interfaz gráfica de usuario.
nos muestran los errores, y nos dicen si es el cliente o el servidor que se ve afectado. – Marcin
@Marcin no me enseña ningún error, solo el primer cliente envía el archivo y finaliza con éxito y el servidor continúa esperando más solicitudes, cuando un segundo cliente intenta conectarse, el programa cliente simplemente no hace nada y permanece en modo de espera. – franvergara66