Sto provando a creare un programma in Python che implementa i socket, ogni client invia un file PDF e il server lo riceve e il titolo viene modificato in "file_number.pdf" (es .: file_1 .PDF). Il problema presentato è che solo un client può inviare un file con successo. Quando un secondo client tenta di inviare il programma si blocca. Cosa sto facendo male e come posso risolvere il mio codice per consentire ai client N (con N < 20) di connettersi al server e trasferire i file?Invia un file attraverso i socket in Python
Ecco il codice del server:
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()
Ecco il codice del client:
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()
Per semplificare il mio codice che uso sempre un libro con il nome del file "libroR.pdf", ma nel pieno il codice è scelto da un'interfaccia utente grafica.
ci mostrano gli errori, e ci dica se è il cliente o il server che è influenzata. – Marcin
@Marcin non mi insegna alcun errore, solo il primo client invia il file e termina con successo e il server continua ad attendere altre richieste, quando un secondo client tenta di connettersi, il programma client non fa nulla e rimane in standby. – franvergara66