2012-11-18 103 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超時在很多情況下是一個幫助,以防套接字活着,但沒有活動,所以不得不使用早期的選項。

相關問題