gpt4 book ai didi

c-select() 识别第一个 fd 未阻塞的 select for read/recv operation

转载 作者:太空宇宙 更新时间:2023-11-03 23:48:58 24 4
gpt4 key购买 nike

给定的客户端 FD 列表(例如:98,99,100)和数据同时在 FD 99、100 上接收选择解锁并读取包含 FD:99 和 FD:100 的 FD

如何判断哪个是第一个数据先到的FD??

如果我连续检查数组中的客户端 FD 列表,它将始终尝试在 FD:99 上进行套接字读取。但是我的应用程序必须从 FD:100 读取数据,因为在该 FD 上接收到数据首先。

FD_ZERO(&readfds);
FD_SET(98, &readfds);
FD_SET(99, &readfds);
FD_SET(100, &readfds);
gMaxfd=100;
rc = select(gMaxfd+1, &readfds, NULL, NULL, NULL);
if(rc>0){
/* Handle the fds for read operation */
/* Here how to identify which is the first FD on which recv has to be called first ???*/
}

最佳答案

如果使这些文件描述符可读的事件之间有任何明显的延迟,select 将返回第一个而不等待第二个。因此,如果您获得多个 fd,则应将这些事件视为同时发生。

如果来自不同来源的同时消息破坏了您的更高级别的协议(protocol),您需要重新设计它。

关于c-select() 识别第一个 fd 未阻塞的 select for read/recv operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26016131/

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