在linux或windows socket编程中
我知道read返回一个表示数字的值 已成功接收字节数。
此返回值可能小于请求的长度。 (即,如果接收缓冲区,read(sd,buf,100)可能返回50 只有50个字节)
是否可能
send(sd, buf, 100);
返回介于1~99之间的值? 如果是的话,那是什么时候? 我想知道具体的例子情况。
提前谢谢
答案 0 :(得分:2)
如果您正在讨论Winsock,请参阅man
页面或MSDN文档,了解正式规范。
在练习中,阻止模式下的 send()
会发送所有数据,无论文档说明什么,除非出现错误,在这种情况下不会发送任何内容。
在非阻塞模式下,它会发送适合套接字发送缓冲区的任何内容,如果>则返回该长度。 0.如果套接字发送缓冲区已满,则返回-1,其中errno = EWOULDBLOCK/EAGAIN
。