蟒蛇。我得到" socket.error:[Errno 49]无法分配请求的地址"在客户端打开和关闭许多套接字后?

时间:2016-07-23 02:54:40

标签: python sockets networking

客户端代码:

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"

在这种情况下,它打印出来"错误"一段时间,然后继续发送文件。所以在我看来,我在客户端和服务器之间建立的端口没有立即释放,我必须等待一段时间后关闭它,直到我可以再次使用它。这可能是正确的吗?如果是这样,我该如何解决?

0 个答案:

没有答案