2016-07-26 146 views
1

在我一直在负责对有工作的现有的网络图书馆是setsockopt一个电话,我不明白在TCP套接字setsockopt的SO_BROADCAST

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

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

紧接着,以setsockopt呼叫用于在IPPROTO_TCP协议级别选项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约?

回答

3

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

+0

啊是的 - 我想它应该给'level = 6'吧?谢谢! –