3

在linux,或者windows socket编程

我知道 read 返回一个值,该值指示成功接收的字节数。

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

有没有可能

send(sd, buf, 100);

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

先感谢您

4

1 回答 1

5

有关官方规范,请参阅man页面或 MSDN 文档(如果您正在谈论 Winsock)。

实践 send()中,无论文档说什么,在阻塞模式下都会发送所有数据,除非出现错误,在这种情况下不会发送任何数据。

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

于 2013-02-05T06:05:44.030 回答