Winsock IO模型之select模型
之所以称其为select模型是因为它主要是使用select函数来管理I/O的。这个模型的设计源于UNIX系统,目的是允许那些想要避免在套接字调用上阻塞的应用程序有能力管理多个套接字。 int select( int nfds, // 忽略,仅是为了与Berkeley套接字兼容 fd_set* readfds, // 指向一个套接字集合,用来检查其可读性 fd_set* writefds, // 指向一个套接字集合,用来检查其可写性 fd_set* exceptfds, // 指向一个套接字集合,用来检查错误 const struct timeval* timeout // 指定此函数等待的最长时间,如果为NULL,则最长时间为无限大 ); Select模型是最常见的I/O模型。 使用 int select( int nfds , fd_set FAR* readfds , fd_set FAR* writefds,fd_set FAR* exceptfds,const struct timeval FAR * timeout ) ; 函数来检查你要调用的Socket套接字是否已经有了需要处理的数据。 select包含三个Socket队列,分别代表: readfds ,检查可读性,writefds,检查可写性,exceptfds,例外数据。 timeout是select函数的返回时间