gpt4 book ai didi

c - C 中的连接超时

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

我的程序最多接受 4 个连接(使用选择功能)。连接后,他们有 5 秒的时间发送一个字符串,表示他们希望保持连接。 5秒内未发送或密码错误者将被断开连接。

我创建了一个小型计时器程序,只要建立连接,它就会 fork 。如果 5 秒过去了, fork 计时器将向原始程序发回一个信号。在这种情况下,信号处理程序将关闭文件描述符,并清除连接。

我的问题是,无论何时触发信号处理程序,select() 都会返回 -1,表示它已失败。有谁知道为什么会这样?或者我是否可以使用其他计时机制?

谢谢

最佳答案

不是生成一个无用的线程,而是保留一个与每个套接字关联的 lastRecvd 字段。然后,只需给 select() 一个 5 秒的超时时间。选择后,任何不在选择列表中的套接字都需要检查是否已超过 5 秒。

至于为什么您当前的代码会失败,我怀疑是因为其中一个文件描述符正在失效。检查 errno 并查看它是否为 EBADF

关于c - C 中的连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9961799/

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