在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实现默默地忽略了这个选项.
总结以上是内存溢出为你收集整理的linux – 套接字选项SO_SNDLOWAT的目的是什么全部内容,希望文章能够帮你解决linux – 套接字选项SO_SNDLOWAT的目的是什么所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)