Python3非阻塞recv

时间:2018-01-19 08:35:07

标签: python-3.x sockets

我想做一个简单的服务器。服务器必须在客户端提供数据时加载数据。我想使用非阻塞的' 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)和其他人不会影响?

0 个答案:

没有答案