socket shutdown

socket關閉的問題,shutdown 和close區別

close()和shutdown()函數
  你已經整天都在發送 (send()) 和接收 (recv()) 數據了,現在你準備關 閉你的套接字描述符了。這很簡單,你可以使用一般的 Unix 文件描述符 的 close() 函數:
  close(sockfd);
它將防止套接字上更多的數據的讀寫。任何在另一端讀寫套接字的企 圖都將返回錯誤信息。
如果你想在如何關閉套接字上有多一點的控制,你可以使用函數 shutdown()。它允許你將一定方向上的通訊或者雙向的通訊(就象close()一 樣)關閉,你可以使用:
int shutdown(int sockfd, int how); 
sockfd 是你想要關閉的套接字文件描述復。how 的值是下面的其中之 一:
  0 – 不允許接受
  1 – 不允許發送
  2 – 不允許發送和接受(和 close() 一樣)
shutdown() 成功時返回 0,失敗時返回 -1(同時設置 errno。) 如果在無連接的數據報套接字中使用shutdown(),那麼只不過是讓 send() 和 recv() 不能使用(記住你在數據報套接字中使用了 connect 後 是可以使用它們的)。


發佈了53 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章