2016-07-26 25 views
1

In einer bestehenden Netzwerk-Bibliothek, die ich beauftragt habe dort zu arbeiten, ist ein Aufruf an setsockopt, die ich nicht verstehesetsockopt SO_BROADCAST auf TCP-Socket

Hier können Sie ein TCP-Socket sehen beginnen erstellt:

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

Unmittelbar danach ein Aufruf an setsockopt für Option SO_BROADCAST am IPPROTO_TCP Protokollebene mit Optionswert 5

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

Nach Beej's guide to networking dieser "Tut nichts - NICHTS !! - TCP-Stream-Sockets! Hahaha“

Fragen:?

  • Was genau sie hier tun
  • Hat das Sinn machen
  • Wenn überhaupt, sollte es doch option_value=1 sein, so was ist der 5 über?

Antwort

3

Ich denke, dass Ihre Setsockopt-Decoder falsch ist. Sind Sie sicher, dass es ist nicht einer von diesen?

#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 */ 

Das ist keine vollständige Liste. Siehe /usr/include/netinet/tcp.h für alles.

+0

Ah ja - ich nehme an, es sollte "level = 6" gegeben werden, oder? Vielen Dank! –