2012-11-18 102 views
-1

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

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

我心目中的解决方案是使用timerfd_create和使用计时器上的描述来监视所有活动的插座。任何以更好的方式实现这一点的建议都是有帮助的。提前致谢。

回答

0

使用select()来监视套接字,这个人的末尾有一个例子page。基本上,你增加文件描述符到fd_set并调用select()它返回时,被监视的文件描述符可以被读取或写入,或者如果您设置超时,然后你可以使用select用小超时检查FD在一定时器回调并关闭那些没有准备好的回调。

+0

我使用epoll的用于监测文件描述符的任何变化。我的问题是,我可以使用select或epoll获取更改的文件描述符。我的问题是如何获取不活动描述符的通知,以便它们可以关闭。它可以通过在描述符上设置计时器或者有更好的方法来实现。 –

+0

@AdnanAkbar你应该提到,在你的问题中,你仍然可以通过select来设置timer和call select如果没有任何结果返回,那么关闭fd。 – iabdalkader

0

我曾经在timerfd.h的timerfd_create和timerfd_settime的API。检测闭合套接字的其他选项是sysconf中的keep_alive超时。 keep_alive超时在很多情况下是一个帮助,以防套接字活着,但没有活动,所以不得不使用早期的选项。

相关问题