2016-07-19 20 views
0

我一直在試圖使一個服務器和客戶端使用epoll聊天一個星期。因爲我是網絡新手的新手,所以我掙扎過多。我結束了這個代碼。 (注意:我現在用telnet連接到我的服務器):http://textuploader.com/5e0ts如何將數據發送到所有Epoll fds?

我該如何發送數據到epoll實例中所有已註冊的fds?我正在嘗試在主循環的循環內執行此操作,但它不起作用。

+0

嗨,請包括最少的代碼示例,直接將問題展示給您的問題。在這裏看到詳細信息:http://stackoverflow.com/help/mcve – gavv

+0

我是新來的,我不知道代碼的哪一部分導致問題。我無法將其最小化。 – wackyburkay

回答

0

您應該確保所有已註冊的FD正在等待EPOLLIN事件。如果是這樣,當你在一個循環中發送數據到FD時,特定的FD可以被「喚醒」並接收數據。

你應該使用nonblocking IO,因爲你想要做的是廣播,但epoll_wait功能是阻塞函數,epoll模型只能由一個處理事件之一,除非你使用一個線程池。

其實,你也可以通過一個與epoll幫助完成使用EPOLLOUT事件將數據發送到一個函數依賴這個任務,而不是在epoll循環迴路內。

相關問題