网络编程 select

1. select多路复用:多路即多个socket,复用即select可以检查多个socket,然后根据select函数的返回值,对socket进行使用。

#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);

2. 参数说明:

nfds:文件描述符的最大值

readfds:可读的文件描述符

writefds:可写的文件描述符

exceptfds:异常的文件描述符

timeout:NULL:阻塞,即无限等待直到有可读写文件。>0:指定等待的时间,时间到,函数返回。

3. fd_set处理函数:
FD_ZERO(fd_set *fdset)          // 将指定的文件描述符集清空,在对文件描述符集合进行设置前,必须对其进行初始化,如果不清空,由于在系统分配内存空间后,通常并不作清空处理,所以结果是不可知的。
FD_SET(int fd,fd_set *fdset)    // 用于在文件描述符集合中增加一个新的文件描述符。
FD_CLR(int fd,fd_set *fdset)    // 用于在文件描述符集合中删除一个文件描述符。
FD_ISSET(int fd,fd_set *fdset)  // 用于测试指定的文件描述符是否在该集合中。
4. 返回值:

<0:出错

=0:等待超时

>0:有文件可读写

5. struct timeval结构

struct timeval {
    time_t tv_sec;
    susends_t tv_usec;
};


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值