python socket poll
本质上和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相关推荐
- [Python_7] Python Socket 编程
0. 说明 Python Socket 编程 1. TCP 协议 [TCP Server] 通过 netstat -ano 查看端口是否开启 # -*-coding:utf-8-*-"&qu ...
- Python Socket请求网站获取数据
Python Socket请求网站获取数据 ---阻塞 I/O ->收快递,快递如果不到,就干不了其他的活 ---非阻塞I/0 ->收快递,不断的去问,有没有送到,有没有送到,. ...
- python udp 直播_[Python] socket发送UDP广播实现聊天室功能
原博文 2018-11-24 12:33 − 一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Wi ...
- 【Python之旅】第五篇(三):Python Socket多线程并发
1.多线程模块 主要是socketserver模块,如下图示: 2.多线程原理 如下图示说明: 3.SockteServer例子说明 服务器端: 客户端: 4.演示 还是以前面例子,对代码进行修改,作 ...
- python socket 说明
一个简单的python socket编程 一.套接字 套接字是为特定网络协议(例如TCP/IP,ICMP/IP,UDP/IP等)套件对上的网络应用程序提供者提供当前可移植标准的对象.它们允许程序接受并 ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- python socket sendto sendall_网络通信 Python Socket UDP Select
前言 工作中遇到各种各样的网络通信.有MQTT和CoAP这样的物联网应用层协议,也有各种自定义的TCP或UDP协议.使用各种不同的计算机语言和框架开发网络通信,例如Java的Netty框架,C语言原始 ...
- python socket编程_Python Socket编程实现网络编程
对于有经验的开发人员来说,掌握的编程语言应该是不少的.在这些编程语言中,网络编程的应用时必不可少的.其中Python也是这样的编程语言.我们今天将会在这里为大家详细介绍一下Python Socket编 ...
- 【转】 python socket向百度发送http长连接请求 并做搜索
http://hi.baidu.com/leejun_2005/blog/item/30fe9bd23a396c28960a1640.html [转] python socket向百度发送http长连 ...
最新文章
- PCL中3D特征描述子Shot详解
- trie树- 转自 维基百科
- Building Android App Without an IDE
- LinkedHashSet集合
- 外媒:英特尔未来10年可能投资950亿美元在欧洲新建8家芯片厂
- 如何下载HLS视频到本地(m3u8)
- 免费的网站地图生成器,sitemap支持xml、html、txt生成绝对站长工具必备使用教程
- 阵列天线方向图-均匀直线/平面阵列matlab仿真
- 【iOS】解决UITextField输入限制受中文自动联想影响的问题
- 安卓初始画面去黑色背景
- 计算机网络知识自问自答,2020计算机网络学习心得体会.doc
- Spring启动,constructor,@PostConstruct,afterPropertiesSet,onApplicationEvent执行顺序 原创 2016年09月29日 11:39:2
- elementui穿梭框数据不更新
- Numpy中stack(),hstack(),vstack()函数的使用方法
- Docker系列(1-简介篇) -- 为什么要使用docker?
- 同比增速创上市以来新低,云米科技何时能够走出小米的舒适圈?
- 从搬砖工到亿万富豪,这些年他经历了什么?
- 2022-2027年中国网络文学商业化市场竞争态势及行业投资前景预测报告
- Java获取明天日期
- 【转】MP3文件头格式
热门文章
- 计算机网络即时通信系统设计_天天玩微信,Spring Boot 开发私有即时通信系统了解一下...
- Python稳基修炼之计算机等级考试易错细节题3(含答案)
- Python稳基修炼的经典案例4(计算机二级、初学者必须掌握的例题)
- Python使用tensorflow中梯度下降算法求解变量最优值
- golang 绘图库_golang入门-- 一个2D的图形库学习
- microsoftstore连不上网_win10系统下微软商店连不了网如何解决
- python抽取数据库元数据_0797-使用HDP或CDP的Atlas采集CDH6的元数据和血缘
- byte集合是否相同_Go 语言设计哲学之十八:接口实现方法集合
- 全局变量中断原子操作_操作系统导论02-06章
- navicat打开表提示不存在_真相 | 专家提示:“真空轮胎”真的不存在!别再提了...