2016-07-26 149 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'吧?謝謝! –