gpt4 book ai didi

c++ - Unix 套接字 : select() with more than one set associated does more than it should do

转载 作者:太空宇宙 更新时间:2023-11-04 11:37:45 25 4
gpt4 key购买 nike

我有以下对 tcp 套接字的选择调用:

ret = select(nfds + 1, &rfds, &rfds2, NULL, &tv);

rfds2 用于发送大数据(非阻塞模式)。并且 rfds 可以检测我们是否在套接字上收到了一些东西。

现在,当发送缓冲区为空时,我使用 rfds2 检测到它。但与此同时,我在 rfds 中取回了套接字,尽管我在那个套接字上没有收到任何东西。

这是选择调用的预期行为吗?如何有序区分发送和接收情况?

最佳答案

Now, when the send buffer is empty, I detect it with rfds2

这是不正确的。 select() 将检测发送缓冲区何时有空间。同时为 OP_READ 和 OP_WRITE 注册套接字几乎是不正确的。 OP_WRITE 几乎总是准备就绪,除了在发送缓冲区已满的短暂间隔内。

关于c++ - Unix 套接字 : select() with more than one set associated does more than it should do,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6422739/

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