accept()是否可能返回与sockfd相同的值?
例如
int newfd = accept(sockfd, NULL, NULL);
是否可以newfd == sockfd
?
答案 0 :(得分:3)
简短的回答是否。
accept()
系统调用与基于连接的套接字类型(SOCK_STREAM
,SOCK_SEQPACKET
)一起使用。它在侦听套接字的挂起连接队列上提取第一个连接请求,sockfd
,创建一个新的连接套接字,并返回一个引用该套接字的新文件描述符。新创建的套接字未处于侦听状态。原始套接字sockfd
不受此调用的影响。
返回此新套接字描述符。
sockfd
参数是一个使用socket()
创建的套接字,绑定到bind()
的本地地址,并且在调用listen()
后正在侦听连接
在调用accept()
之前,返回的描述符不存在。