Python 为什么在socket.recv()之后永远无法到达break语句
我编写以下代码来接收数据,然后将数据写入文件 我的问题是: 我发现if分支(“if not data:break”)从未执行过, 1). 为什么永远无法到达if分支? 2). 我的代码如何退出while循环Python 为什么在socket.recv()之后永远无法到达break语句,python,python-sockets,Python,Python Sockets,我编写以下代码来接收数据,然后将数据写入文件 我的问题是: 我发现if分支(“if not data:break”)从未执行过, 1). 为什么永远无法到达if分支? 2). 我的代码如何退出while循环 s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) s.connect("/var/run/output.socket") while True: data = s.recv(1024) if not data:
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect("/var/run/output.socket")
while True:
data = s.recv(1024)
if not data:
break
else:
f = open("/home/ematt/test.log",'a')
f.write(data)
socket.recv始终具有数据。它将等待一些数据到达
请参见socket.recv始终具有数据。它将等待一些数据到达 请参见是一个阻塞调用,它在收到数据(或对等方已关闭连接)时返回 如果希望避免等待数据到达,可以将套接字设置为using 在这种模式下,
recv
在没有可用数据时抛出异常。
有关如何使用它的更多信息和代码示例,请参阅。是一个阻塞调用,它在收到数据(或对等方已关闭连接)时返回
如果希望避免等待数据到达,可以将套接字设置为using
在这种模式下,recv
在没有可用数据时抛出异常。
有关如何使用它的详细信息和代码示例,请参见,远程方关闭连接时除外。远程方关闭连接时除外。
s.setblocking(False)