accept函数笔记

来源:互联网 发布:mysql mac dmg 下载 编辑:程序博客网 时间:2024/06/13 11:28
#include<sys/socket.h>int accept(int sockfd, struct sockaddr *cliaddr, socklen_t * addrlen)

accept函数有TCP服务调用,用于从已完成连接队列头返回下一个已完成连接。如果已完成连接队列为空,那么进程被投入睡眠(假定套接字为默认的阻塞方式)

返回:若成功则为非负描述符,若出错则为-1

在讨论accept函数时,我们称它的第一个参数为监听套接字描述符,称它的返回值为已连接套接字描述符。区别这两个套接字非常重要。一个服务器通常仅仅创建一个监听套接字,它在该服务器的生命周期内一直存在。内核为每个由服务器进程接受的客户连接创建一个已连接套接字(也就是说对于它的TCP三次握手过程已经完成)。当服务器完成对某个给定客户的服务时,相应的已连接套接字就被关闭。