【问题标题】:Meaning of adding 1 on socket file descriptor in select function when using linux socket使用linux socket时select函数中socket文件描述符加1的意义
【发布时间】:2021-01-09 08:50:08
【问题描述】:

在select函数中使用socket文件描述符加1是什么意思?

我创建如下套接字文件描述符,

int sock_file_descriptor;
sock_file_descriptor = socket(AF_INET, SOCK_DGRAM, 0);

并在下面的选择函数中使用它,

result = select(sock_file_descriptor+1, &readfd, NULL, NULL, 0);

select函数中+1是什么意思? 当我删除添加值的计算时,它甚至不起作用。

提前致谢。

【问题讨论】:

  • 文档reads:nfds:此参数应设置为三组中任何一个中编号最高的文件描述符,加1。每组中指示的文件描述符被检查,直到这个限制(但请参阅错误)。

标签: c++ linux sockets select


【解决方案1】:

实时调频! select的第一个参数是要考虑的文件描述符的数量:

nfds 参数指定要测试的描述符范围。应在每组中检查第一个 nfds 描述符;即检查描述符集中从零到 nfds-1 的描述符。

这是一个使用示例:

// create socket
int sock_file_descriptor;
sock_file_descriptor = socket(AF_INET, SOCK_DGRAM, 0);

// initialize the read fd_set
fd_set read;
FD_ZERO(&read);
FD_SET(sock_file_descriptor, &read);

// ok we can select
result = select(sock_file_descriptor+1, &readfd, NULL, NULL, 0);

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 2023-04-10
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多