【发布时间】:2012-03-12 00:40:37
【问题描述】:
我正在尝试用 python 编写一个实现套接字的程序。每个客户端发送一个 PDF 文件,服务器接收它,标题更改为“file_(number).pdf”(例如:file_1.pdf)。出现的问题是只有客户端才能成功发送文件。当第二个客户端尝试发送文件时,程序崩溃。我做错了什么,如何解决我的代码以允许 N 个客户端(N
这是服务器代码:
import socket
import sys
s = socket.socket()
s.bind(("localhost",9999))
s.listen(10) # Accepts up to 10 incoming connections..
sc, address = s.accept()
print address
i=1
f = open('file_'+ str(i)+".pdf",'wb') # Open in binary
i=i+1
while (True):
# We receive and write to the file.
l = sc.recv(1024)
while (l):
f.write(l)
l = sc.recv(1024)
f.close()
sc.close()
s.close()
这是客户端代码:
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()
为了简化我的代码,我总是使用文件名为“libroR.pdf”的书,但在完整代码中它是由 GUI 选择的。
【问题讨论】:
-
向我们显示错误,并告诉我们受影响的是客户端还是服务器。
-
@Marcin 没有教我任何错误,只是第一个客户端发送文件并成功结束,服务器继续等待更多请求,当第二个客户端尝试连接时,客户端程序什么也不做并保持待机状态。