select recv
时间: 2023-08-23 12:11:14 浏览: 55
select函数在网络编程中常用于多路复用IO操作,包括接收数据。当程序调用select时,内核会遍历一遍socket,如果有一个以上的socket接收缓冲区有数据,select直接返回,不会阻塞。这也是为什么select的返回值有可能大于1的原因之一。如果没有socket有数据,进程才会阻塞。\[1\]
在使用select函数接收数据时,需要准备一个数组fds,存放需要监视的socket。然后调用select函数,如果fds中的所有socket都没有数据,select会阻塞,直到有一个socket接收到数据,select返回,唤醒进程。用户可以遍历fds,通过FD_ISSET判断具体哪个socket收到数据,然后进行数据处理。\[3\]
综上所述,select函数可以用于接收数据,通过设置需要监视的socket,当有数据到达时,select函数会返回,用户可以通过遍历监视的socket来判断哪个socket收到了数据,并进行相应的处理。\[1\]\[3\]
#### 引用[.reference_title]
- *1* *3* [recv、select、poll、epoll解析](https://blog.csdn.net/wqfhenanxc/article/details/106388865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [recv select](https://blog.csdn.net/lusic01/article/details/79527282)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]