网络编程 之 epoll

epoll 参数设置

  1. events设置
ev.events = EPOLLIN | EPOLLET;
  • epoll实现TCP通讯时,events通用设置如上,EPOLLIN代表可socket套接字可接收数据,EPOLLET代表边沿触发。
  • 在服务器端, 接受客户端连接的socket不能设置为EPOLLOUT,只设置EPOLLOUT会导致接收不到客户端的连接请求.
  • 在服务器端, 设置接收客户端连接后的socket为EPOLLOUT,也会导致错误。错误如下:

eval: Resource temporarily unavailable

  • 当需要发送数据时,可以设置为EPOLLOUT,当发送完成,需要设置为EPOLLIN模式。
  1. epoll_create参数设置
epoll_create(EPOLL_SIZE)
  • EPOLL_SIZE值的大小只有0和其他值的区别。经测试设置为0时,运行会报参数传入错误。设置为其他任何一个值时,接收客户端连接都正常。
  • 看到另一种写法也可以:

epoll_create1(0)

  1. epoll之客户端连接数量
  • 在测试时,并发数量设置为10000,但是连接数量到达1024个数时报如下错误:

eval: Too many open files

  • 这种原因的造成是由于linux对打开文件个数的限制。可以通过如下命令查看:
(base) rd@rd:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31010
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024

  • 打开文件数量限制为1024,我们需要更改这个限制条件才可以增大并发的数量。

测试代码可以:https://gitee.com/tony-tuning/epoll-demo

在这里插入图片描述

  • 设计代码时,有以上两种选择,epoll demo使用的是右边方式进行客户端管理。我们也可以为每个客户端创建一个线程进行处理,如上面左图所示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值