C語(yǔ)言 close()函數(shù)和shutdown()函數(shù)
在完成通信后,可以使用close()函數(shù)或shutdownO函數(shù)來(lái)關(guān)閉套接字。close()函數(shù)的調(diào)用形式為:
close(sockfd);
使用套接字除了可以實(shí)現(xiàn)網(wǎng)絡(luò)中不同主機(jī)間的通信外,還可以實(shí)現(xiàn)同一主機(jī)不同進(jìn)程間的通信,且建立的通信是雙向的通信。這里所指的使用套接字實(shí)現(xiàn)進(jìn)程間通信,是由將通信域指定為PF_UNIX來(lái)實(shí)現(xiàn)的。該函數(shù)的形式如下:
int socket(int domain, int type, int protocol);
socket()函數(shù)中的domain參數(shù)用于指定通信域,表16-2為domain支持的通信域的參數(shù)。domain參數(shù)取PFJJNIX時(shí),表示創(chuàng)建UNIX域的套接字。使用PF_UNIX域的套接字可以實(shí)現(xiàn)同一機(jī)器上不同進(jìn)程間的通信。
調(diào)用bind()函數(shù)實(shí)現(xiàn)了套接字與地址(這里是文件名)的綁定。bind()函數(shù)的具體信息如下:
int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);
其參數(shù)my_addr為指向結(jié)構(gòu)體sockaddr_un的指針,該結(jié)構(gòu)體的定義如下:
#eflne UNIX_PATH_MAX 108
struct sockaddr_un {
sa_family_t sun_family; /* PF_UNIX或AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* 路徑名 */
};
在該結(jié)構(gòu)體中,sun_family為AF_UNIX; sun_path是套接字在文件系統(tǒng)中的路徑名。
點(diǎn)擊加載更多評(píng)論>>