我的查询与setsocketopt() api 中的“SO_RCVBUF”选项相关。 在setsockopt()中为SO_RCVBUF指定的新值何时生效?
我正在测试 TCP/IP 的流量控制,下面是我的环境。 客户端程序是一个缓慢的读取器,并且它有一个套接字。 为了测试流量控制,我在建立连接之后、接收数据之前将 SO_RCVBUF 的值减少到 5000 字节。 我的期望是,我的服务器程序在发送 5000+ 字节后应该等待客户端读取。但是服务器程序发送的数据直到〜60000字节。 之后服务器程序将等待客户端读取。一旦客户端读取 ~55000 字节,我就会看到接收缓冲区的新值(5000 字节)被利用。
这是预期的吗?我想 setsocketopt() 的效果应该是立竿见影的。接收缓冲区的初始值在setsocketopt()之后不应产生任何影响。
问候, 普拉珊特
最佳答案
我认为你应该在调用connect()
之前设置SO_RCVBUF,因为那是分配缓冲区的时候。通过稍后调用它可能根本没有任何效果,或者如您所观察到的那样有延迟效果。
关于c - 在setsockopt()中为SO_RCVBUF指定的新值何时生效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23341043/