[英]While Loop doesnt break
我一直在努力制作自己的云存储,但是在收到我的文件数据后,它并没有破坏 while 循环。 它不会继续执行打印语句,在该语句中表示文件已下载并等待来自服务器的更多数据。
这是它接收文件数据的代码部分:
if console == "download":
s.send(bytes("download","utf-8"))
file_name = input("Enter the file name: ")
s.send(bytes(file_name,"utf-8"))
print(f"[DOWNLOADING] Downloading {file_name}")
f = open(file_name,'wb')
while(True):
l = s.recv(1024)
f.write(l)
if not l:
break
print(f"[DOWNLOADED] Downloaded {file_name}")
socket.recv
是一个阻塞调用。
socket.recv(1024)
最多读取1024
个字节,如果没有数据等待读取则阻塞。 如果您没有读取所有数据,则对 socket.recv 的其他调用不会阻塞。
如果连接关闭或出现错误,socket.recv 也将以空字符串结尾。
如果你想要一个非阻塞套接字,你可以使用 select 模块(比仅仅使用套接字复杂一点)或者你可以使用socket.setblocking
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.