9.22. shutdown()
停止對 socket 繼續傳送與接收
函式原型
說明
如果我不需要再對 socket 進行傳送[send()],但是我仍然想要接收[recv()]socket 的資料,反之亦然,那我該怎麼做呢?
當你使用 close() 關閉 socket descriptor 時,它會將 socket 的傳送與接收兩端都關閉,並且釋放 socket descriptor。若你只想要關閉其中一端,你就可以使用 shutdown() call。
在這些參數中,s 顯然是你想要進行動作的 socket,而要進行什麼樣的動作,則要由 how 參數指定。要如何使用 SHUT_RD 來關閉接收,SHUT_WR 以關閉傳送,或者 SHUT_RDWR 將收送功能都關閉。
要注意 shutdown() 並沒有釋放 socket descriptor,所以即使 socket 已經整個 shutdown 了,最終仍然得透過 close() 關閉 socket。
這是蠻少用的 system call。
傳回值
成功時傳回零,或者錯誤時傳回 -1(並設定相對應的 errno)。
範例
參考
close()
Last updated