在 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!"
问题:
- 他们到底来这里做什么?
- 这有意义吗?
- 如果有的话,肯定应该是
option_value=1
,那么5
是什么意思?
我认为你的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 了解所有内容。
在我负责处理的现有网络库中,有一个调用 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!"
问题:
- 他们到底来这里做什么?
- 这有意义吗?
- 如果有的话,肯定应该是
option_value=1
,那么5
是什么意思?
我认为你的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 了解所有内容。