如何将数据发送到所有Epoll fds?

时间:2016-07-19 13:11:16

标签: linux epoll

我一直在尝试使用epoll制作服务器和客户端聊天一周。我斗争太多,因为我是这个网络的新手。我最终得到了这段代码。 (注意:我现在用telnet连接到我的服务器):http://textuploader.com/5e0ts

我应该如何向epoll实例中的所有已注册的fds发送数据?我试图在主循环中的循环内执行此操作,但它不起作用。

1 个答案:

答案 0 :(得分:0)

您应该确保所有注册的FD都在等待EPOLLIN事件。如果是这样,当您在循环中向FD发送数据时,可以“唤醒”特定FD并接收数据。

您应该使用nonblocking IO,因为您要做的是广播,但epoll_wait功能是阻止功能,epoll模型只能逐个处理事件,除非你使用一个线程池。

实际上,您还可以使用EPOLLOUT事件完成此任务,以便在epoll的帮助下逐个向FD发送数据,而不是在epoll循环中循环。< / p>