【发布时间】:2011-09-06 20:59:12
【问题描述】:
如果我在非阻塞套接字上使用recv(sockfd, buffer, len, 0); 会发生什么?
如果套接字sockfd 已关闭或没有可读取的内容,recv() 会阻塞吗? (注意:recv () 中的标志是0)。
【问题讨论】:
如果我在非阻塞套接字上使用recv(sockfd, buffer, len, 0); 会发生什么?
如果套接字sockfd 已关闭或没有可读取的内容,recv() 会阻塞吗? (注意:recv () 中的标志是0)。
【问题讨论】:
如果套接字被标记为非阻塞,recv 将永远不会阻塞。时期。
如果套接字正常但没有要读取的数据,您将得到 -1 作为返回值,并且 errno 将设置为 EAGAIN。
如果出现错误(关闭套接字等),您仍然会得到 -1 返回值,但 errno 将被设置为适当的值。
【讨论】:
如果没有要读取的内容,它将阻塞,如果套接字关闭,它将返回错误。
请参阅recv man page。
【讨论】: