加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 套接字选项SO_SNDLOWAT的目的是什么

发布时间:2020-12-13 13:53:16 所属栏目:Linux 来源:网络整理
导读:我目前正在使用C语言从Tru64移植到Linux Suse 11. 在Tru64上,他们将SO_SNDLOWAT套接字选项的值设置为1024 * 64.在Linux上,此选项不可更改且值为1. 我想弄清楚,在Linux上的软件执行中,非设置SO_SNDLOWAT对1024 * 64的影响是什么. 问题是我找到了SO_SNDLOWAT目

我目前正在使用C语言从Tru64移植到Linux Suse 11.
在Tru64上,他们将SO_SNDLOWAT套接字选项的值设置为1024 * 64.在Linux上,此选项不可更改且值为1.

我想弄清楚,在Linux上的软件执行中,非设置SO_SNDLOWAT对1024 * 64的影响是什么.

问题是我找到了SO_SNDLOWAT目的的两个定义(解释):

>在Linux上的socket的手册页上找到:

SO_SNDLOWAT
Specify the minimum number of bytes in the buffer until the
socket layer will pass the data to the protocol

我知道它指定缓冲区中要进行的最小字节数(在这种情况下用于发送消息).缓冲区需要至少填充SO_SNDLOWAT字节才能继续
>在“UNIX网络编程:套接字网络API”一书中找到
W. Richard Stevens,Bill Fenner,Andrew M. Rudoff“

The send low-water mark is the amount of available space that must exist in the socket send buffer for select to return “writable”.

我明白,如果我想在套接字缓冲区中写入(无论我写的是什么大小),缓冲区需要最少的SO_SNDLOWAT字节.

我不知道该怎么做SO_SNDLOWAT.

最佳答案
第一个描述是正确的解释.

至于无法设置SO_SNDLOWAT的影响,我认为这不重要,因为性能取决于Nagle的算法,路径MTU发现等等.我怀疑其他TCP / IP实现默默地忽略了这个选项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读