【问题标题】:setsockopt SO_BROADCAST on TCP socketTCP 套接字上的 setsockopt SO_BROADCAST
【发布时间】:2016-07-26 16:44:45
【问题描述】:

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

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

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

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

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

根据Beej's guide to networking 这个“对 TCP 流套接字什么都不做——什么都做!!哈哈哈!”

问题:

  • 他们到底在做什么?
  • 这有意义吗?
  • 如果有的话,肯定应该是option_value=1,那么5 是关于什么的?

【问题讨论】:

    标签: sockets networking tcp posix setsockopt


    【解决方案1】:

    我认为您的 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。

    【讨论】:

    • 啊是的 - 我想应该给它level=6 对吧?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    相关资源
    最近更新 更多