c語言下,關閉socket的兩種方式

2021-06-29 01:23:37 字數 936 閱讀 5215

一、shutdown()

#include

int shutdown(int sockfd,int how);

how的方式有三種分別是

shut_rd(0):關閉sockfd上的讀功能,此選項將不允許sockfd進行讀操作。不允許接受。

shut_wr(1):關閉sockfd的寫功能,此選項將不允許sockfd進行寫操作。不允許傳送。

shut_rdwr(2):關閉sockfd的讀寫功能。不允許傳送和接受(和 close() 一樣)。

成功則返回0,錯誤返回-1,錯誤碼errno:ebadf表示sockfd不是乙個有效描述符;enotconn表示sockfd未連線;enotsock表示sockfd是乙個檔案描述符而不是socket描述符。

二、close()

#include

int close(int fd);

關閉讀寫。它將防止套接字上更多的資料的讀寫。任何在另一端讀寫套接字的企 圖都將返回錯誤資訊。

成功則返回0,錯誤返回-1,錯誤碼errno:ebadf表示fd不是乙個有效描述符;eintr表示close函式被訊號中斷;eio表示乙個io錯誤。

區別:1、shutdown()在如何關閉套接字上有多一點的控制。shutdown 可以單向關閉,close不可以。

2、當多執行緒共享/呼叫同乙個socket時,close只是會減1,直到減到0才會真正去關閉socket,

而shutdown則不會理會有多少執行緒在用,強制直接關閉socket.

C 語言Pagerank兩種實現

最近正在學習hadoop相關的知識,參考了很多材料,如下是c 的兩種實現。目前對這個演算法只是知道了運算的過程和思路,理解的還不是太深刻,我看到論壇上很多朋友算的pr值超過1,總感覺是有問題,具體哪有問題反倒倒說不好了,請知曉的朋友幫忙分析下。附件是兩種實現方式,感興趣的朋友可以自行下來看看,有不對...

C語言不定引數的兩種實現

1 使用以下三個函式可實現不定引數 includevoid va start va list ap,last type va arg va list,type void va end va list ap 1 va start 該函式用來初始化指標變數ap va list實際是void型別 之後處理...

C語言的兩種字串

c語言中的兩種字串 1.兩種字串的表示 1.字串陣列 char str1 hello char str2 6 hello 注意 在字串 陣列 初始化時sizeof str 的大小應該比你想要的大小 1,因為在作為字串時,會有乙個 0 自動成為字串的元素 上述的例子如果變成 char str2 5 h...