socket 之阻塞与非阻塞

套接子的阻塞与非阻塞


阻塞:

在未完成当前任务时,不会去处理其他任务。例如当一个函数在执行接收数据时,只要数据未接收完,它就会一直等待接收下去,不会执行其他的操作。

非阻塞:

在未完成一个任务时,可以停止该项任务,进行下一步的操作。例如socket服务端在等待客户端的连接时,若有客户端请求连接,则与之连接。若没有客户端的请求,服务端就会去做其他的事情,而不会一直等待。

默认情况下tcp套接字处于阻塞模式,可是调用setblocking(0)或者setblocking(1)将套接字改为非阻塞模式或阻塞模式。

如下代码:

import socket

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setblocking(0) #非阻塞模式
s.settimeout(0.5)#超时时间
s.bind((h,p))...


你可能感兴趣的:(socket,非阻塞,阻塞)