accept函数
头文件 | <sys/types.h> <sys/socket.h> | ||
函数形式 | int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); | ||
返回值 | 成功 | 失败 | 是否设置errno |
返回新的套接字文件描述符 | −1 | 是 |
该函数的第一个参数指定处于监听状态的流套接字;
操作系统利用第二个参数来返回新创建的套接字的地址结构;
操作系统利用第三个参数来返回新创建的套接字的地址结构的长度。
本函数会阻塞等待直到有客户端请求到达。然后监听的sockfd就会创建返回一个新的套接字描述符,这个套接字指向第二个参数 addr,该结构赋予客户端的套接字,即客户端的ip和端口号。知道了客户端地址,然后就可以开始传输数据了,在面向连接中,有send(int sockfd,const void *msg,int len,int flags);其中这里的参数sockfd 就是新创建的套接字,也是客户端的地址(ip和port);recv()函数同样道理。
如还有疑问:可在评论中一起探讨。