gpt4 book ai didi

c - 当以 0 超时调用时,poll() ingores 传入数据

转载 作者:太空狗 更新时间:2023-10-29 12:33:22 28 4
gpt4 key购买 nike

我的应用程序通过零超时调用 poll() 来检查 TCP 套接字中的传入数据。 99% 的时间它工作正常,当套接字上有数据时它设置 POLLIN 标志。然而,有时套接字上有数据(我在 wireshark 上看到消息),但 poll() 返回 0(超时)并且不设置 POLLIN 标志。当另一条消息到来时,它会在几秒钟后设置 POLLIN 标志。

这是正常行为吗? poll() 是否总是在超时前至少检查一次传入数据?

根据answers in another question , Linux 手册页对此不是很清楚。

最佳答案

我重现了在 poll() 中传递 10 毫秒超时的错误。经过进一步调查,我发现问题是由包装 unix 套接字 API 的库中的错误引起的。它从套接字加载数据到缓冲区,然后在消耗缓冲区中的所有字节之前轮询套接字以获取更多数据。无论如何,感谢您的评论。

因此,即使超时为 0,poll() 似乎也能正常工作。

关于c - 当以 0 超时调用时,poll() ingores 传入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338212/

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