如果我在非阻塞套接字上使用recv(sockfd, buffer, len, 0);
会怎样?
如果套接字sockfd
已关闭或无法读取,recv()
阻止了吗? (注意:recv ()
中的标记为0
)。
答案 0 :(得分:2)
如果套接字被标记为非阻塞,则recv将永远不会阻塞。期。
如果套接字没问题,但没有要读取的数据,则返回值为-1,而errno将设置为EAGAIN。
如果出现错误(关闭套接字等),您仍然会得到-1返回值,但errno将被设置为适当的值。
答案 1 :(得分:0)
如果没有任何东西要读,它会阻塞,如果套接字关闭,它将返回错误。
请参阅recv man page。