【发布时间】:2012-01-04 23:11:27
【问题描述】:
我目前正在将一个 C 语言软件从 Tru64 移植到 Linux Suse 11。
在 Tru64 上,他们将SO_SNDLOWAT 套接字选项的值设置为1024 * 64。在 Linux 上,此选项不可更改,其值为 1。
我想弄清楚,不将SO_SNDLOWAT 设置为1024 * 64 对Linux 上的软件执行会有什么影响。
问题是我发现SO_SNDLOWAT的目的有两个定义(解释):
-
在 Linux 上的 socket 手册页上找到:
SO_SNDLOWAT
指定缓冲区中的最小字节数,直到 套接字层将数据传递给协议我知道它指定了缓冲区中要继续的最小字节数(在这种情况下用于发送消息)。缓冲区至少需要填充
SO_SNDLOWAT字节才能继续 -
在《UNIX 网络编程:W. Richard Stevens、Bill Fenner、Andrew M. Rudoff 的套接字网络 API》一书中找到
发送低水位标记是套接字发送缓冲区中必须存在的可用空间量,以便 select 返回“可写”。
我明白,如果我想写入套接字缓冲区(无论我正在写入的大小),缓冲区至少需要有
SO_SNDLOWAT字节可用。
我不知道如何看待SO_SNDLOWAT。
【问题讨论】:
标签: linux sockets unix porting