处于监听状态的服务器在获得客户端的连接请求后,会将其放置在等待队列中。当系统空闲时,将接受客户端的连接请求。接收客户端的连接请求使用acceptO函数,该函数原型如下:
int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen):
accept()函数用于面向连接类型的套接字类型SOCK_STREAM和SOCK_SEQPACKET。 accept()函数将从连接请求队列中获得连接信息,创建新的套接字,并返回该套接字的文件描述符。新创建的套接字用于服务器与客户机的通信,而原来的套接字仍然处于监听状态。
accept()函数的sockfd参数为监听的套接字描述符;addr参数为指向结构体sockaddr的指针;参数addrlen为addr参数指向的内存空间的长度。
accept()函数常见的错误信息:
© EAGAIN:套接字处于非阻塞状态,当前没有连接请求。
© EBADF:非法的文件描述符。
© ECONNABORTED:连接中断。
© EINTR:系统调用被信号中断。
© EINVAL:套接字没有处于监听状态,或非法的addrlen参数。
© EMFILE:达到进程打开文件描述符限制。
© ENFILE: 达到打开文件数限制。
© ENOTSOCK:文件描述符为文件的文件描述符。
© EOPNOTSUPP:套接字类型不是SOCK__STREAM0
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>