当通过Socket发送数据时,send / write何时返回-1?

时间:2010-11-11 00:15:33

标签: c linux sockets tcp

Linux操作系统。 Tcp套接字。

send()/ write()命令何时失败?

只有当内核中的TCP发送缓冲区溢出时,它才返回-1吗?

2 个答案:

答案 0 :(得分:4)

来自write()的OpenGroup定义:

  

成功完成后,写()   [XSI]和pwrite()将返回   实际写入的字节数   与fildes相关联的文件。这个   数字永远不会大于   nbyte。否则,返回-1   和errno设置为表示错误。

send()

的send() - OpenGroup页面也是如此

您可以通过查看错误来了解更多信息。有关更多信息,请参阅errno上的OpenGroup页面。

答案 1 :(得分:0)

对于您的特定点 - 如果您的写入呼叫是阻塞,(默认情况下),溢出只会阻止您,直到有可用的缓冲区空间。< / p>

如果写入调用是非阻塞,并且缓冲区已满,则收到错误。