套接子的阻塞与非阻塞
阻塞:
在未完成当前任务时,不会去处理其他任务。例如当一个函数在执行接收数据时,只要数据未接收完,它就会一直等待接收下去,不会执行其他的操作。
非阻塞:
在未完成一个任务时,可以停止该项任务,进行下一步的操作。例如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))...
时间: 2024-11-06 19:04:31