求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

Setsockopt檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
  Setsockopt

setsockopt()函數,用於任意類型、任意狀態套接口的設置選項值。儘管在不同協議層上存在選項,但本函數僅定義了最高的「套接口」層次上的選項。

簡介

有兩種套接口的選項:一種是布爾型選項,允許或禁止一種特性;另一種是整型或結構選項。允許一個布爾型選項,則將optval指向非零整形數;禁止一個選項optval指向一個等於零的整形數。對於布爾型選項,optlen應等於sizeof(int);對其他選項,optval指向包含所需選項的整形數或結構,而optlen則為整形數或結構的長度。SO_LINGER選項用於控制下述情況的行動:套接口上有排隊的待發送數據,且closesocket()調用已執行。參見closesocket()函數中關於SO_LINGER選項對closesocket()語義的影響。

評價

缺省條件下,一個套接口不能與一個已在使用中的本地地址捆綁(參見bind())。但有時會需要「重用」地址。因為每一個連接都由本地地址和遠端地址的組合唯一確定,所以只要遠端地址不同,兩個套接口與一個地址捆綁並無大礙。為了通知套接口實現不要因為一個地址已被一個套接口使用就不讓它與另一個套接口捆綁,應用程序可在bind()調用前先設置SO_REUSEADDR選項。請注意僅在bind()調用時該選項才被解釋;故此無需(但也無害)將一個不會共用地址的套接口設置該選項,或者在bind()對這個或其他套接口無影響情況下設置或清除這一選項一個應用程序可以通過打開SO_KEEPALIVE選項,使得套接口實現在TCP連接情況下允許使用「保持活動」包。一個套接口實現並不是必需支持「保持活動」,但是如果支持的話,具體的語義將與實現有關,應遵守RFC1122「Internet主機要求-通訊層」中第4.2.3.6節的規範。如果有關連接由於「保持活動」而失效,則進行中的任何對該套接口的調用都將以WSAENETRESET錯誤返回,後續的任何調用將以WSAENOTCONN錯誤返回。[1]

參考文獻

  1. Setsockopt搜狗