2011-06-16 55 views
1

我已經使用epoll創建了一個linux服務器。我意識到,客戶端將使用udp數據包...epoll是udp客戶端的一個壞主意嗎?

我剛剛從我的代碼中刪除了「監聽」部分,它看起來像在工作。但我想知道我可能面臨的任何隱藏的問題或問題。

另外,如果客戶端發送udp數據包,使用epoll作爲服務器,這是一個壞主意嗎?

+0

我的項目使用epoll與UDP,TCP,定時器和其他事件的混合,我沒有看到有關UDP位的特定問題。 – 2011-06-16 08:36:36

回答

1

如果相應的線程不需要做其他任何事但只接收UDP數據包,那麼您可以在recvfrom上攔截,這與系統調用少一些,代碼複雜度較低時效果完全相同。另一方面,如果你需要週期性地做其他事情或者一些適時的約束,而這些約束不應該依賴於數據包是否到達網絡,那麼最好使用epoll,即使看起來有點過分。 epoll的一大優點是,除了合理高效之外,它還很舒適和可擴展(你可以插入signalfd,timerfd或eventfd等許多東西)。