监视套接字描述符

时间:2012-11-18 13:50:38

标签: c++ c linux monitoring

我有一个应用程序,一次打开许多套接字描述符。我想监视这些仅用于任何活动并关闭一段时间没有看到任何活动的描述符。我有一些解决方案,但不确定是否可以通过防火墙规则来完成。我不想浪费我的努力来通过一些系统服务或配置来实现。

必须在基于linux的系统上完成。

我想到的解决方案是使用timerfd_create并在描述符上使用计时器来监视所有活动套接字。任何以更好的方式实现这一目标的建议都将是有益的。提前谢谢。

2 个答案:

答案 0 :(得分:0)

使用select()来监控套接字,这是人page末尾的一个例子。基本上,您将文件描述符添加到fd_set并调用select()它可以在读取或写入其中一个受监视的文件描述符时返回,或者如果设置了超时,则可以使用select小超时检查计时器回调中的fd并关闭未准备好的fd。

答案 1 :(得分:0)

我在timerfd.h中使用了timerfd_create和timerfd_settime api。检测已关闭套接字的其他选项是sysconf中的keep_alive超时。如果套接字处于活动状态但没有活动,那么keep_alive超时不是很大的帮助,所以不得不使用前面的选项。