[英]Code will not continue after breaking from a while loop receiving client data
我创建了一个客户端/服务器设置,用于将 PGP 签名信息从客户端传输到服务器。 下面的代码显示了部分服务器代码,其中将从客户端接收到的签名添加到 output 文本文件中
但是,我的代码在第二个 while 循环之后,在中断之后无法继续。 它从客户端接收到2个签名,并且只成功打印了两次“test”字符串,并将两个接收到的字符串都添加到output文件中,但是程序中断后将无法继续,并且不打印其他“test2”和“test3” "字符串。
while True:
# Accepts incoming connection, creating socket used for data transfer to client
conn, addr = server.accept()
print("Connected successfully")
directory = "(Hidden for question)"
outputFile = open((directory + "\\signatures.txt"), "w")
while True:
data = conn.recv(2048)
if not data: break
print("test")
outputFile.write(data.decode()+"\n")
outputFile.flush()
print("test2")
conn.close()
print("test3")
我觉得我错过了一些非常明显的东西,但无法弄清楚问题是什么。
您的循环永远不会中断,因为套接字上的recv
function 是一个阻塞调用。 这意味着 function 在收到一些数据之前不会返回,因为not data
总是错误的。
尝试将更多信息(在前 2 个签名之后)发送到套接字中,并查看您的脚本将继续将其写入文件中。
如果您想接收特定数量的数据/时间,请使用变量跟踪它并使用它来打破循环。
除了@Nadav 的回答,删除内部的while
循环。 由于recv()
是同步的,因此您不需要循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.