套接字编程send()返回值

时间:2013-02-05 05:41:56

标签: linux sockets networking

在linux或windows socket编程中

我知道read返回一个表示数字的值 已成功接收字节数。

此返回值可能小于请求的长度。 (即,如果接收缓冲区,read(sd,buf,100)可能返回50 只有50个字节)

是否可能

send(sd, buf, 100);

返回介于1~99之间的值? 如果是的话,那是什么时候? 我想知道具体的例子情况。

提前谢谢

1 个答案:

答案 0 :(得分:2)

如果您正在讨论Winsock,请参阅man页面或MSDN文档,了解正式规范。

练习中,阻止模式下的 send()会发送所有数据,无论文档说明什么,除非出现错误,在这种情况下不会发送任何内容。

在非阻塞模式下,它会发送适合套接字发送缓冲区的任何内容,如果>则返回该长度。 0.如果套接字发送缓冲区已满,则返回-1,其中errno = EWOULDBLOCK/EAGAIN