epoll—IO多路复用
2024-08-25 11:29:46
1.在socket.listen()后创一个epoll对象 epoll = select.epoll()
2.将server_socket注册到epoll中 epoll.register( )
3. conn_dict = dict() 用来保存新的socket对象和对应的fd和关系 addr_dict = dict()用来保存 新的socket对象的ip端口和对应的fd和关系
3.while True:
5.epoll_list = epoll.poll() 创建一个epoll列表 epoll_list中是【(套接字的文件描述符, 状态),(···,····),(····,·····),】
4.遍历epoll列表 用两个变量fd,evevt接受 。
5.判断 if fd == server.socket.fileno(): 说明是新连接
把新的套接字注册到epoll中 epoll.register()
conn_dict[new_socket.fileno()] = new_socket
addr_dict[new_socket.fileno()] = new_addr
if even == select.EPOLLIN: 说明是连接的客户端发来消息了
接受处理就好
如果客户机关闭了连接 :
epoll.unregister(fd) 从epoll中去掉这和套接字
conn_dict[fd].close() 关闭本次连接
del conn_dict[fd]
del addr_dict[fd]
最新文章
- SSISDB3:Environments 和 Environment Variables
- Python的平凡之路(20)
- 数据可视化:Echart中k图实现动态阈值报警及实时更新数据
- Enabling CORS in WCF
- IceFig阅读笔记
- Redis 一:安装篇
- Ildasm.exe(MSIL 反汇编程序)
- ios改变系统默认样式
- Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO
- BOM(2)
- UVALive 3177 Beijing Guards
- Django实现组合搜索
- .Net学习计划
- 20175223 实验一 《JAVA开发环境的熟悉》实验报告
- codeforces703B
- 在Eclipse中使用JUnit4进行单元测试(图文教程一)
- Appium Desktop 介绍及使用
- 自定义kafka Sink
- python 的弹框
- windows下使用GNU make命令报错的解决方法