在Linux上发送异步套接字

时间:2011-04-12 09:42:24

标签: c++ linux sockets asynchronous send

当在异步套接字上发送返回EAGAIN时,这是否意味着: 当前的呼叫刚刚成功排队或没有做任何事情,因为系统仍处理上一次发送?

提前谢谢。

2 个答案:

答案 0 :(得分:6)

来自man 2 send

  

套接字被标记为非阻塞,请求的操作将被阻止。 POSIX.1-2001允许在这种情况下返回错误,并且不要求此常量[EAGAIN EWOULDBLOCK]具有相同的值,因此便携式应用程序应检查这两种可能性。

所以,我认为EAGAIN表示:be careful, the message did not fit into send buffer, this call would be blocked in normal (blocking) mode. Use select(2) to determine whether you can send more data.

P.S。实际上,看起来呼叫失败了,没有做任何事情。

答案 1 :(得分:2)

什么都没做。

如果完成了某些操作,返回值会告诉您发送了多少个字符。当你得到返回值-1和errno = EAGAIN时,没有发送任何内容。