close與shutdown的區別

2021-06-09 23:14:11 字數 468 閱讀 1404

終止網路連線的通常方法是呼叫close函式。不過close有兩個限制,卻可以使用shutdown來避免。

1  close把描述字的引用計數減1,僅在該計數變為0的時候才關閉套介面。而使用shutdown可以不管引用計數的值是多少就激發tcp的正常連線終止序列,也即是傳送fin節。

2  close終止資料傳送的兩個方向:讀和寫。而有的時候只是想關閉讀或寫,那麼此時就使用shutdown函式進行關閉套介面描述字某一方向的操作。

例如:在有父子程序的伺服器程式中,套介面描述字是在父子程序之間共享的,因此它的引用計數為2。要是父程序呼叫close,那麼這只是把該引用計數由2減為1,而且既然它仍然大於,fin就不傳送。這就是為什麼在shutdown函式的原因,不管套介面的計數值為多少,fin都必須被近傳送出去。   當shutdown函式中的第2個引數為shut_wr 的時候,稱為半關閉,此操作後,當前留在套介面傳送緩衝中的資料將被傳送掉,後跟tcp的正常連線終止序列。

shutdown和close的區別

當所有的資料操作結束以後,你可以呼叫close 函式來釋放該socket,從而停止在該socket上的任何資料操作 close sockfd 你也可以呼叫shutdown 函式來關閉該socket。該函式允許你只停止在某個方向上的資料傳輸,而乙個方向上的資料傳輸繼續進行。如你可以關 閉某socket...

close和shutdown函式的區別

close函式首先是將傳入的socket控制代碼引用數減1 因為fork程序時會導致socket控制代碼被多個程序引用 待到引用數等於0的時候,close才會真正關閉連線。shutdown函式是立刻關閉連線 忽視控制代碼引用數值 關閉有三種方式 shut rd 關閉呼叫程序的讀通道,呼叫程序立刻不能...

open函式與close函式

標頭檔案 include 在centos6.0中只要此標頭檔案就可以 include incldue 功能 開啟和建立檔案 建立乙個檔案描述符,其他的函式可以通過文 件描述符對指定檔案進行讀取與寫入的操作。原型 int open const char pathname,int flags int o...