首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Beej's Guide to Network Programming 系列第16篇:套接字關閉與 shutdown() 精細控制

     編輯:關於C語言

5.9 close() 與 shutdown() —— 徹底斷開連接的藝術

經過一番 send() 和 recv() 的數據傳輸後,我們需要妥善關閉套接字。最簡單的方法是使用標準的 Unix 文件描述符關閉函數 close():

int close(int sockfd);

這將阻止套接字上的進一步讀寫操作。對端嘗試讀寫時將收到錯誤信號。

shutdown():更精細的關閉控制

如果需要更精確地控制關閉方向(只關閉發送、只關閉接收、或雙向關閉),可以使用 shutdown():

int shutdown(int sockfd, int how);

how 參數取值:

  • 0(SHUT_RD):禁止接收。
  • 1(SHUT_WR):禁止發送。
  • 2(SHUT_RDWR):禁止發送和接收(等同於 close())。

返回值:成功返回 0,失敗返回 -1 並設置 errno。

注意:在無連接的數據報套接字上調用 shutdown() 只是讓 send() 和 recv() 失效(記住,如果在數據報套接字上調用過 connect(),則可以使用這兩個函數)。

摘自 xiaobin_HLJ80 的專欄

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved