【发布时间】:2016-07-08 12:29:38
【问题描述】:
我现在正在使用一个应用程序,该应用程序主要使用带有 select() 超时的阻塞套接字,但是对于 Write 函数,我正在使用带有 send() 的非阻塞套接字。我只需要知道,在什么(以及所有)情况下 send() 会返回 EWOULDBLOCK/EAGAIN?
【问题讨论】:
-
我不确定我是否理解这个问题,或者您可能不理解文档。如果套接字处于非阻塞模式并且调用会因任何原因阻塞,
send()将返回EAGAIN或EWOULDBLOCK。规范没有更详细地介绍,并且无论如何细节都将是特定于实现的。对于某些实现,这意味着发送缓冲区中没有足够的可用空间来容纳整个消息,但缓冲细节同样是特定于实现的。 -
@JohnBollinger 对于所有实现。文档中提到了发送缓冲区。它们不是实现细节。
标签: c sockets networking send nonblocking