客户端代码:
for currentFile in files:
s = socket(AF_INET, SOCK_STREAM)
s.connect((host, port))
f = open(currentFile, 'rb')
b = f.read()
while b:
s.send(b)
b = f.read()
s.close()
f.close()
服务器端代码:
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
serverSocket.listen(1)
while True:
(clientsocket, address) = serverSocket.accept()
b = clientsocket.recv(4096)
f = open('filename', 'wb')
while b:
f.write(b)
b = clientsocket.recv(4096)
f.close()
我的实际服务器端代码还有一些,但它与网络部分无关(为每个新文件生成文件名等)
当我在相对较短的时间内发送大量文件时,我发现此错误
socket.error: [Errno 49] Can't assign requested address
我用try除了块修改了我的代码:
notFoundSocket = 1
while notFoundSocket:
try:
s.connect((host, port))
notFoundSocket=0
except:
print "Error"
在这种情况下,它打印出来"错误"一段时间,然后继续发送文件。所以在我看来,我在客户端和服务器之间建立的端口没有立即释放,我必须等待一段时间后关闭它,直到我可以再次使用它。这可能是正确的吗?如果是这样,我该如何解决?