gpt4 book ai didi

linux - linux select() 如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:19 25 4
gpt4 key购买 nike

有人可以向我解释一下 select() 是如何工作的吗?我有一个错误的心智模型,无法从手册页中理解它。

如果我的客户端有多个连接到不同服务器的套接字,并且我定期从服务器读取一些信息,内核如何知道要读取哪个套接字标记?他怎么知道哪个套接字 read() 不会阻塞?如果它真的不从服务器读取数据,我认为这是不可预测的。

最佳答案

内核没有预测任何东西。它告诉您套接字接收缓冲区的当前状态。如果缓冲区不为空,则套接字是可读的。如果缓冲区为空,则 select() 等待。当数据包从服务器到达时,内核使用 IP 地址、协议(protocol)和端口号将其与正确的套接字匹配。数据包被放入套接字的接收队列,并通知 select() 状态已更改。

关于linux - linux select() 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405429/

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