我有一个应用程序,它一次打开许多套接字描述符。我只想监视这些是否有任何活动,并关闭一段时间以来没有看到任何活动的描述符。我有一些解决方案,但不确定这是否可以通过防火墙规则完成。我不想把我的精力浪费在可以通过某些系统服务或配置来实现的事情上。
它必须在基于linux的系统上完成。
我想到的解决方案是使用 timerfd_create 并在描述符上使用计时器来监视所有活动的套接字。任何以更好的方式实现这一目标的建议都会有所帮助。提前致谢。
我有一个应用程序,它一次打开许多套接字描述符。我只想监视这些是否有任何活动,并关闭一段时间以来没有看到任何活动的描述符。我有一些解决方案,但不确定这是否可以通过防火墙规则完成。我不想把我的精力浪费在可以通过某些系统服务或配置来实现的事情上。
它必须在基于linux的系统上完成。
我想到的解决方案是使用 timerfd_create 并在描述符上使用计时器来监视所有活动的套接字。任何以更好的方式实现这一目标的建议都会有所帮助。提前致谢。
我在 timerfd.h 中使用了 timerfd_create 和 timerfd_settime api。检测已关闭套接字的其他选项是 sysconf 中的 keep_alive 超时。如果套接字处于活动状态但没有活动,keep_alive 超时没有太大帮助,因此必须使用较早的选项。
用于监视套接字,手册页select()
末尾有一个示例。基本上,您将文件描述符添加到 an并在可以读取或写入其中一个受监视的文件描述符时调用它返回,或者如果您设置了超时,则可以使用 select 和一个小的超时来检查计时器回调中的 fd并关闭那些没有准备好的。fd_set
select()