1. 程式人生 > >套接字描述符的理解

套接字描述符的理解

一、首先明確 啥是“套接字”——所謂套接字就是對通訊端點的抽象。

套接字描述符——就如程式通過檔案描述符訪問檔案一樣,套接字描述符是訪問套接字的一種路徑。

從某種意義上說,套接字也在檔案,所以許多對檔案描述符使用的函式,對套接字描述符同樣適用,但是有些是不可使用的。

二、與套接字相關的兩個函式:int socket(int domain,int type,int protocol) /*返回一個套接字描述符*/

int shutdown(int socketfd,int how)  

int socket(int domain,int type,int protocol) 

其作用就是:返回一個套接字描述符

domain——套接字通訊域——的取值:AF_INET,AF_INET6,AF_UNIX,AF_UNSPEC

type————套接字型別——--的取值:SOCK_DGRAM,SOCK_RAW,SOCK_SEQPACKET,SOCK_STREAM

protocal——————————的取值:通常為0,表示按給定的域或套接字型別選擇預設協議。當對同一域和套接字型別支援多個協議時,可以使用protocol引數選擇一個特定協議。

 

int shutdown(int sockfd,int how)

作用就是:關閉sockfd指向的套接字的how。其中how的取值可以為:SHUT_RD,SHUT_WR,SHUT_RDWR

注:shutdown 與close的區別

close是指:關閉一個指向檔案的檔案描述符,其實只是關閉了這個檔案描述符對檔案表的指標。如果該檔案仍有其他檔案描 述符引用的話,該檔案的V節點表並沒有關閉。只有當關閉的檔案描述符是最後一個指向檔案的檔案描述符,V節點才能也被關閉。

而shutdown是關閉對一檔案的讀寫等屬性,不問有多少個檔案描述符對該檔案引用。

 

參考文獻:《unix環境高階程式設計》 第二版