我时常会看到一些网络相关的代码(包括遗留代码)和其他地方使用 setsockopt
函数并设置 SO_RCVBUF
选项来修改 socket 的接收缓冲区大小。在我的 Windows 10 系统中,socket 的默认缓冲区大小似乎为 64KB。我现在正在处理的遗留代码(编写于 10 多年前)将每个 socket 的接收缓冲区大小设置为 256KB。
以下是与此相关的一些问题:
- 如果 socket 被连续监视和读取(例如使用
select
),是否有任何理由修改接收缓冲区大小? - 如果没有,那么十多年前有什么动机呢?
- 是否有任何示例、用例或应用程序需要修改 socket 的接收缓冲区大小(甚至发送缓冲区大小)?