epoll的 - 轮询多个文件描述符(即是插座)(epoll - polling multiple

2019-10-18 17:16发布

我读手册页,并通过这个例子使用去: https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/ ,但我想不通办法做什么,我试图做使用epoll的,任何人都可以借给我一些帮助?

基本上我写的netcat型工具来更好地学习C /网。 我创建了一个基本的服务器/客户端,可以监听并连接一个端口上。 现在我想扩展服务器方面监听的端口范围。

我打算通过一个循环做到这一点的每个端口创建套接字(),绑定(),听()。

由于端口范围可以达到65K,我需要轮询他们和accept()当一个人有收到连接请求。

Unlinke使用轮询或epoll的处理多个连接的一个端口上典型的C系列服务器,这是几千年潜在端口一一连接。 我不能完全从例子中我怎么能EPOLL插座,当请求连接接受它,并取消绑定/停止监听/查询得到。

有没有人有任何例子解释/代码让我开始吗?

Answer 1:

1 - 创建您的所有服务器套接字

2 - 他们的文件描述符将被包含在一个范围内,像[4,199]

3 - 所有的人都加入到epoll的描述,在一个循环。

然后在正常epoll的循环,如果与该事件的描述是[4199]或无论是你在练习场的范围内,那么你就知道这是一个服务器套接字,你需要接受它,否则做任何你做你的连接描述符。

这样做的另一种方法是创建2所epoll的描述,并使用一个只用于服务器插槽和其他只为连接描述符。 这样做的振作的是,你需要对它们都使用epoll的话! 所以,我不会建议此。

既然你要创建的描述符的数量是如此之大,你很可能需要改变一些内核参数,因为你可能会击中在处理这么多开放一些描述限制。



文章来源: epoll - polling multiple file descriptors (that are sockets)
标签: c linux