我想做一个简单的服务器。服务器必须在客户端提供数据时加载数据。我想使用非阻塞的' recv '命令,但无论我做什么它仍然阻止。我的代码在上面。
import socket
import fcntl
import os
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("localhost", 8888))
server_socket.listen()
client_socket, addr = server_socket.accept()
#fcntl.fcntl(client_socket, fcntl.F_SETFL, os.O_NONBLOCK) #mark1
client_socket.setblocking(False) #mark2
#client_socket.settimeout(0.0) #mark3
while True:
data = client_socket.recv(10)
if len(data) != 0:
print(data.decode("UTF8"))
else:
break
print("Exit")
我尝试使用'#mark1 ','#mark2 ',' #mark3 '。这些线对我来说似乎相当不错,但是我的程序仍然停留在data = client_socket.recv(10)
行的第二次迭代中。
为什么client_socket.setblocking(False)
和其他人不会影响?