一、poll函数
原型:
int poll(struct pollfd *fds, nfds_t nfds, int timeout);
函数功能:
等文件描述符集合中中的文件描述符准备就绪
头文件:
#include <poll.h>
参数:
fds :结构体数组首地址
nfds :检测数组中的元素个数(文件描述符个数)
timeout : 超时时间, -1:表示永久阻塞
返回值:
成功:可用文件描述符个数
失败:-1
超时:返回 0值
注意:
struct pollfd {
int fd; //保存要检测的文件描述符
short events; //要检测的事件(可读POLLIN、可写POLLOUT)
short revents; //当文件描述符的事件产生,系统自动赋值 (POLLIN、POLLOUT)
};
二、代码实现
server.c
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/select.h>
#include <poll.h>
#define SIZE 64
int server_init(char *ipaddr, unsigned short port, int backlog)
{
int sockfd = socket