1

如果我recv(sockfd, buffer, len, 0);在非阻塞套接字上使用会发生什么?

如果套接字sockfd已关闭或没有可读取的内容,是否recv()阻塞?(注意:中的标志recv ()0)。

4

2 回答 2

2

如果套接字被标记为非阻塞,recv 将永远不会阻塞。时期。

如果套接字正常但没有数据要读取,您将得到 -1 作为返回值,并且 errno 将设置为 EAGAIN。

如果出现错误(关闭套接字等),您仍然会得到 -1 返回值,但 errno 将被设置为适当的值。

于 2011-06-02T07:02:50.373 回答
0

如果没有可读取的内容,它将阻塞,如果套接字关闭,它将返回错误。

请参阅recv 手册页

于 2011-06-02T07:02:00.793 回答