如果我recv(sockfd, buffer, len, 0);
在非阻塞套接字上使用会发生什么?
如果套接字sockfd
已关闭或没有可读取的内容,是否recv()
阻塞?(注意:中的标志recv ()
是0
)。
如果套接字被标记为非阻塞,recv 将永远不会阻塞。时期。
如果套接字正常但没有数据要读取,您将得到 -1 作为返回值,并且 errno 将设置为 EAGAIN。
如果出现错误(关闭套接字等),您仍然会得到 -1 返回值,但 errno 将被设置为适当的值。
如果没有可读取的内容,它将阻塞,如果套接字关闭,它将返回错误。
请参阅recv 手册页。