2016-07-26 3 views
1

В существующей сетевой библиотеке я была поставлена ​​задача работать на есть вызов setsockopt, который я не понимаюsetsockopt SO_BROADCAST на TCP сокет

Здесь вы можете увидеть сокет TCP начинают создано:

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

Сразу же после этого, вызов setsockopt выполнен для варианта SO_BROADCAST на уровне протокола IPPROTO_TCP, со значением опции 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' правильно? Благодаря! –

 Смежные вопросы

  • Нет связанных вопросов^_^