繁体   English   中英

虽然循环不会中断

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM