gpt4 book ai didi

linux - 读取时的套接字行为

转载 作者:太空狗 更新时间:2023-10-29 11:48:16 25 4
gpt4 key购买 nike

客户端每 1 秒向套接字写入 5 个字节。服务器不断地从套接字中读取。服务器端的缓冲区长 10 个字节。所以函数看起来像这样

 read(fd, buf, 10);

服务器每次读取5个字节。

现在客户端连续写入 5 个字节。服务器是一样的。服务器每次读取 10 个字节。

套接字上的读取返回缓冲区中可用的尽可能多的字节也是如此。它不会等待填满缓冲区。

和SO_RCVLOWAT有关系吗。我读到这个套接字选项只对选择/轮询 io 有影响。

谢谢

更新:

我将 SO_RCVLOWAT 更改为 10,现在它至少在接收缓冲区中等待 10 个字节。所以它似乎确实与接收缓冲区的低水位线有关。

但我无法将低水位线设置为 0。在这种情况下,它总是将其设置为 1。为什么会这样?

最佳答案

我认为 10 实际上是缓冲区的长度,因此读取最多将读取 10 个字节,但可能不会将所有内容都读入其中,或者可能不会填满。我相信它实际上返回写入缓冲区的字节数。

不,它通常不会等到缓冲区满了才返回。

关于linux - 读取时的套接字行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1743721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com