gpt4 book ai didi

c - 将相同的套接字 fd 两次添加到 fd_set 然后调用 select

转载 作者:行者123 更新时间:2023-12-02 08:15:18 28 4
gpt4 key购买 nike

我一直在阅读 select 的手册页(来自不同的来源),但似乎无法得到直接的解释。

假设我有一个已经连接的套接字,如下所示:

s1 = socket(...);
connect(s1, ...)...

现在假设我将套接字两次(例如:错误地)添加到同一个 fd_set,如下所示:

fd_set readfds;


FD_ZERO(&readfds);
FD_SET(s1, &readfds);
....
FD_SET(s1, &readfds);

现在我调用选择:

int rv = select(n, &readfds, NULL, NULL, &tv);

if (rv == -1) {
perror("select"); // error occurred in select()
}
else if (rv == 0) {
printf("Timeout occurred! No data after 10.5 seconds.\n");
}
else {
// one the descriptors have data
.....
}

如果从套接字发送数据,选择将两个 FD 都设置为就绪还是仅将我添加的第一个 FD 设置为就绪?

最佳答案

因为 FD_SET 是一个集合(在这个词的数学意义中),任何文件描述符要么中,要么 .多次将相同的描述符添加到集合中没有任何效果。

关于c - 将相同的套接字 fd 两次添加到 fd_set 然后调用 select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42502622/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com