Tôi đang cố gắng tạo một chương trình bằng Python thực hiện các ổ cắm, mỗi máy khách gửi một tệp PDF và máy chủ nhận nó và tiêu đề được đổi thành "file_number.pdf" (ví dụ: tệp_1 .pdf). Vấn đề được trình bày là chỉ có một khách hàng có thể gửi một tập tin thành công. Khi một khách hàng thứ hai cố gắng gửi chương trình bị lỗi. Tôi đang làm gì sai và làm thế nào tôi có thể giải quyết mã của tôi để cho phép N khách hàng (với N < 20) để kết nối với máy chủ và chuyển các tập tin?Gửi tệp qua ổ cắm bằng Python
Dưới đây là đoạn code 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()
Đây là mã khách hàng:
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()
Để đơn giản hóa mã của tôi tôi luôn luôn sử dụng một cuốn sách với tên file "libroR.pdf", nhưng trong toàn mã nó được chọn bởi một giao diện người dùng đồ họa.
Hiện chúng tôi các lỗi, và cho chúng tôi biết cho dù đó là khách hàng hoặc máy chủ mà bị ảnh hưởng. – Marcin
@Marcin không dạy cho tôi bất kỳ lỗi nào, chỉ khách hàng đầu tiên gửi tệp và kết thúc thành công và máy chủ tiếp tục chờ thêm yêu cầu, khi khách hàng thứ hai cố gắng kết nối, chương trình khách hàng không làm gì cả và vẫn ở chế độ chờ. – franvergara66