超时时间,先判断当前套接字模式,非阻塞式套接字超时时间为0,阻塞式套接字读取对应的超时字段取值。当我们通过setsocketopt设置SO_SNDTIMEO/SO_RCVTIMEO选项时,其实就是给套接字的发送/接收超时字段进行赋值,没有设置的话默认无限大,也就是一直等下去。
send/recv函数执行时,判断发送/接收超时字段为0,则认为当前为非阻塞式模式,非0认为是阻塞式。若此时资源没有准备好,对于非阻塞式套接字,函数将直接返回,并设置errno,对于阻塞式套接字,进程将挂起直到发生了IO事件或者超时时间到。