Linux网络编程之select的理解

这两天在学习linux网络编程,其中学习到了select框架,有些地方百思不得其解。今天搞明白了,在这里记录下。

涉及的代码内容:

    fd_set rfds, rset; 
    FD_ZERO(&rfds); 
    FD_SET(sockfd, &rfds); 

什么是fd_set类型;

它是一个无符号长整形的数组结构体。大体声明结构为:

struct fd_set {
 unsigned long val[1024/ 8 * sizeof(unsigned long)] // unsigned long为8字节长度,也就是8 * 8
}

关于FD_SET的理解:

fd_set rfds, rset;
FD_SET(sockfd, &rfds); 

FD_SET在这里做了什么?

他是将sockfd的标志放入到rfds的中。

        因为rfds是一个ul(unsigned long)类型的数组。而sockfd是文件句柄(int型,也就可以理解为1个代表个通道的数字)。那么FD_SET就将这个sockfd的数值当作rfds的数组下标。将rfds中对应sockfd这个下表位置的值改成1。 表示select监听I/O事件的时候,只管这个sockfd对应位置,其他位置的I/O事件他不管。如果有多个sockfd要监听,就FD_SET多次,然后将各个sockfd都设置到rfds中去。

关于FD_ISSET函数

int maxfd = sockfd;
int clientfd =

相关推荐

  1. Linux网络编程select理解

    2024-06-08 18:58:06       8 阅读
  2. C++Linux网络编程:简单select模型运用

    2024-06-08 18:58:06       31 阅读
  3. Linux网络编程

    2024-06-08 18:58:06       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 18:58:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 18:58:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 18:58:06       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 18:58:06       20 阅读

热门阅读

  1. MATLAB sort

    2024-06-08 18:58:06       8 阅读
  2. 2024-06-04 问AI: 介绍一下 Tensorflow 里面的 Keras

    2024-06-08 18:58:06       6 阅读
  3. spec文件是干嘛的?

    2024-06-08 18:58:06       5 阅读
  4. 11本AI人工智能相关电子书推荐(带下载地址)

    2024-06-08 18:58:06       11 阅读
  5. 深度学习 - PyTorch简介

    2024-06-08 18:58:06       6 阅读
  6. springAMQP(示例)

    2024-06-08 18:58:06       8 阅读
  7. QT5.5.0中使用lambda表达式时遇到的问题

    2024-06-08 18:58:06       6 阅读
  8. C++的算法:拓扑排序的原理及应用

    2024-06-08 18:58:06       5 阅读
  9. 百度大模型算法实习岗上岸经验分享!

    2024-06-08 18:58:06       10 阅读
  10. 矩阵相乘torch.einsum()

    2024-06-08 18:58:06       8 阅读
  11. mybatisplus QueryWrapper or 写法

    2024-06-08 18:58:06       10 阅读
  12. window.clearInterval(timer) 清除定时器

    2024-06-08 18:58:06       12 阅读