如何判断客户端何时完成发送图像

时间:2018-02-09 11:50:41

标签: python sockets

我正在使用ftp套接字在python中创建一个文件服务器,其中多个客户端将图像发送到服务器。这是我用来在服务器端接收图像的方法:

while True:
    data = client.recv(512)
    if not data:
        break
    file.write(data)

这是我用来将图像发送到服务器的方法:

while True:
    data = file.read(512)
    if not data:
        break
    server.send(data)

我遇到的问题是,在服务器端,while循环永远不会退出,这意味着代码要么停留在recv调用中,要么if语句永远不会为真。在客户端没有问题,循环正常退出。我听说客户端会向服务器发送一些东西告诉它停止但是if语句似乎没有把它拿起来。如何在不关闭连接的情况下让服务器停止尝试接收?

2 个答案:

答案 0 :(得分:0)

https://docs.python.org/2/howto/sockets.html#disconnecting

在客户端上,关闭服务器的套接字。在服务器上,检查recv是否返回0字节。

同样来自documentation for using a socket

  

当recv返回0个字节时,表示另一侧已关闭(或者是   在关闭的过程中)连接。你不会收到任何   有关此连接的更多数据。永远。您可以发送数据   成功;我稍后会谈到这个。

答案 1 :(得分:0)

除非客户端关闭连接,否则数据永远不会是什么。

server.close()