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