首页 > 解决方案 > 使用linux socket时select函数中socket文件描述符加1的意义

问题描述

在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是什么意思?当我删除添加值的计算时,它甚至不起作用。

提前致谢。

标签: c++linuxsocketsselect

解决方案


实时调频!的第一个参数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);

推荐阅读