本质上和select没有区别,只是没了最大文件描述符的限制

方法 描述
select.poll() 返回poll对象,用来注册文件描述符和事件
poll.register(fd[, eventmask]) fd是整数,可以是fileno()方法返回;eventmask:事件类型
poll.modify(fd, eventmask) 更新注册信息
poll.unregister(fd) 注销fd
poll.poll([timeout]) 检测注册后的fd,返回[(fd,event),()…];如果返回空说明超时,且没有事件发生,否则阻塞
事件类型 描述
POLLIN 读就绪
POLLOUT 写就绪
POLLHUP 挂起
POLLPRT 有数据紧急读取
POLLERR 某些错误情况出现
POLLNVAL 无效请求:描述无法打开
import select, socketresponse = b"hello world"serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
serversocket.bind(('localhost', 8000))
serversocket.listen(1)
serversocket.setblocking(0)poll = select.poll()
poll.register(serversocket.fileno(), select.POLLIN)  # 监听数据读取事件connections = {}
while True:for fd, event in poll.poll():if event == select.POLLIN: # 读就绪if fd == serversocket.fileno():  # 注意这个是监听描述符,不是连接文件描述符,这个是用来判断有没有连接进来con, addr = serversocket.accept()poll.register(con.fileno(), select.POLLIN) # 这个是用来监听连接的文件描述符,服务端和客户端创建连接后,会使用新的文件描述符connections[con.fileno()] = con  # 将连接描述符放入字典管理else:con = connections[fd]  # 获取连接的fd,和连接对象data = con.recv(1024)if data:  # 如果获得客户端发来的数据,就将连接的注册事件更改为写就绪,进入到下面的elifpoll.modify(con.fileno(), select.POLLOUT)elif event == select.POLLOUT:  # 监听到写就绪事件,就发送消息con = connections[fd]con.send(response)poll.unregister(con.fileno())  # 注销该连接,既从连接池里删除con.close()

参考:
https://www.cnblogs.com/qianyuliang/p/6551553.html

python socket poll相关推荐

  1. [Python_7] Python Socket 编程

    0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"&qu ...

  2. Python Socket请求网站获取数据

     Python Socket请求网站获取数据 ---阻塞 I/O     ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...

  3. python udp 直播_[Python] socket发送UDP广播实现聊天室功能

    原博文 2018-11-24 12:33 − 一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Wi ...

  4. 【Python之旅】第五篇(三):Python Socket多线程并发

    1.多线程模块 主要是socketserver模块,如下图示: 2.多线程原理 如下图示说明: 3.SockteServer例子说明 服务器端: 客户端: 4.演示 还是以前面例子,对代码进行修改,作 ...

  5. python socket 说明

    一个简单的python socket编程 一.套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并 ...

  6. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  7. python socket sendto sendall_网络通信 Python Socket UDP Select

    前言 工作中遇到各种各样的网络通信.有MQTT和CoAP这样的物联网应用层协议,也有各种自定义的TCP或UDP协议.使用各种不同的计算机语言和框架开发网络通信,例如Java的Netty框架,C语言原始 ...

  8. python socket编程_Python Socket编程实现网络编程

    对于有经验的开发人员来说,掌握的编程语言应该是不少的.在这些编程语言中,网络编程的应用时必不可少的.其中Python也是这样的编程语言.我们今天将会在这里为大家详细介绍一下Python Socket编 ...

  9. 【转】 python socket向百度发送http长连接请求 并做搜索

    http://hi.baidu.com/leejun_2005/blog/item/30fe9bd23a396c28960a1640.html [转] python socket向百度发送http长连 ...

最新文章

  1. PCL中3D特征描述子Shot详解
  2. trie树- 转自 维基百科
  3. Building Android App Without an IDE
  4. LinkedHashSet集合
  5. 外媒:英特尔未来10年可能投资950亿美元在欧洲新建8家芯片厂
  6. 如何下载HLS视频到本地(m3u8)
  7. 免费的网站地图生成器,sitemap支持xml、html、txt生成绝对站长工具必备使用教程
  8. 阵列天线方向图-均匀直线/平面阵列matlab仿真
  9. 【iOS】解决UITextField输入限制受中文自动联想影响的问题
  10. 安卓初始画面去黑色背景
  11. 计算机网络知识自问自答,2020计算机网络学习心得体会.doc
  12. Spring启动,constructor,@PostConstruct,afterPropertiesSet,onApplicationEvent执行顺序 原创 2016年09月29日 11:39:2
  13. elementui穿梭框数据不更新
  14. Numpy中stack(),hstack(),vstack()函数的使用方法
  15. Docker系列(1-简介篇) -- 为什么要使用docker?
  16. 同比增速创上市以来新低,云米科技何时能够走出小米的舒适圈?
  17. 从搬砖工到亿万富豪,这些年他经历了什么?
  18. 2022-2027年中国网络文学商业化市场竞争态势及行业投资前景预测报告
  19. Java获取明天日期
  20. 【转】MP3文件头格式

热门文章

  1. 计算机网络即时通信系统设计_天天玩微信,Spring Boot 开发私有即时通信系统了解一下...
  2. Python稳基修炼之计算机等级考试易错细节题3(含答案)
  3. Python稳基修炼的经典案例4(计算机二级、初学者必须掌握的例题)
  4. Python使用tensorflow中梯度下降算法求解变量最优值
  5. golang 绘图库_golang入门-- 一个2D的图形库学习
  6. microsoftstore连不上网_win10系统下微软商店连不了网如何解决
  7. python抽取数据库元数据_0797-使用HDP或CDP的Atlas采集CDH6的元数据和血缘
  8. byte集合是否相同_Go 语言设计哲学之十八:接口实现方法集合
  9. 全局变量中断原子操作_操作系统导论02-06章
  10. navicat打开表提示不存在_真相 | 专家提示:“真空轮胎”真的不存在!别再提了...