socket選項--SO_LINGER,SO_REUSEADDR(SO_REUSEPORT)

SO_LINGER:當TCP連接的一段主動close()連接時,一般情況下,系統會馬上返回,但是當有數據殘留在發送緩衝區時,系統會現將這些數據發送出去再返回,這樣可以優雅地關閉掉連接。這就可能使close()阻塞在系統調用中。

    這種情況下,我們可以使用套接字選項SO_LINGER來改變這種默認設置。該選項會在用戶空間與內核間傳遞如下結構體:

struct linger{

                 int l_onoff;   //on:打開緩衝發送的開關,允許系統將殘留在發送緩衝區中的數據發送出去

                 int l_linger;  //允許的阻塞時間(即允許系統將殘留在發送緩衝區中的數據發送出去的最大等待時間,時間一到,無論如何都會關閉套接字的一端)

                 }


SO_REUSEADDR: 有四個不同的功能

   1、在一個服務端口被子進程佔用的情況下,允許重啓服務,並且在父進程中再次綁定(bind函數)端口成功

   2、允許在同一個端口啓動同一個服務的多個實例。前提是bing的IP地址不同。

  



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章