套接字描述符的理解
一、首先明確 啥是“套接字”——所謂套接字就是對通信端點的抽象。
套接字描述符——就如程序通過文件描述符訪問文件一樣,套接字描述符是訪問套接字的一種路徑。
從某種意義上說,套接字也在文件,所以許多對文件描述符使用的函數,對套接字描述符同樣適用,但是有些是不可使用的。
二、與套接字相關的兩個函數: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環境高級編程》 第二版
總結
- 上一篇: 嵌入式通讯协议设计
- 下一篇: OpenCV角点检测之Harris角点检