在 TCP 套接字上设置 setsockopt SO_BROADCAST

setsockopt SO_BROADCAST on TCP socket

在我负责处理的现有网络库中,有一个调用 setsockopt 我不明白

在这里您可以看到一个 TCP 套接字开始创建:

[socket] fd(11) domain(2:AF_INET) type(1:SOCK_STREAM) protocol(0:default)

紧接着,在 IPPROTO_TCP 协议级别为选项 SO_BROADCAST 调用 setsockopt,选项值为 5

[setsockopt] fd(11) level(6:IPPROTO_TCP) option(6:SO_BROADCAST) ret(0) option:
    0    0500 0000                                  ....

根据Beej's guide to networking这个"Does nothing—NOTHING!!—to TCP stream sockets! Hahaha!"

问题:

我认为你的setsockopt 解码器是错误的。您确定不是其中之一吗?

#define TCP_NODELAY              1  /* Don't delay send to coalesce packets  */
#define TCP_MAXSEG               2  /* Set maximum segment size  */
#define TCP_CORK                 3  /* Control sending of partial frames  */
#define TCP_KEEPIDLE             4  /* Start keeplives after this period */
#define TCP_KEEPINTVL            5  /* Interval between keepalives */
#define TCP_KEEPCNT              6  /* Number of keepalives before death */

这不是完整列表。参见 /usr/include/netinet/tcp.h 了解所有内容。