2018-08-06-Python全栈开发day35-day36-select
通过select进行io多路复用
io多路复用的原理和阻塞io相似,只是select可以同时监听多个连接,并且对连接的变化做出响应。
1.select
即使是tcp也可以同时连接多个客户端
from socket import * import selects1=socket(AF_INET,SOCK_STREAM) s1.bind(('127.0.0.1',8080)) s1.listen(5) s1.setblocking(False)while 1:r,w,e=select.select([s1,],[],[])#r就是select监听的列表,可以是多个for i in r:conn,addr=i.accept()conn.send('good'.encode('utf8'))data=conn.recv(1024)print(data.decode('utf-8'))
服务端
from socket import *c1=socket(AF_INET,SOCK_STREAM) c1.connect(('127.0.0.1',8080))while 1:c1.send('hello'.encode('utf8'))data=c1.recv(1024)print(data.decode('utf-8'))
客户端
2.selector
import selectors from socket import *def fun_s2(s2,mask):conn,addr=s2.accept()conn.setblocking(False)s1.register(conn,selectors.EVENT_READ,fun_conn) def fun_conn(conn,mask):data=conn.recv(1024)print(data.decode('utf-8'))s1=selectors.DefaultSelector()s2=socket(AF_INET,SOCK_STREAM) s2.bind(('127.0.0.1',8080)) s2.listen(5) s2.setblocking(False)s1.register(s2,selectors.EVENT_READ,fun_s2)while 1:l=s1.select()for i,mask in l:callback=i.datacallback(i.fileobj,mask)
from socket import *c1=socket(AF_INET,SOCK_STREAM) c1.connect(('127.0.0.1',8080))while 1:c1.send(input().encode('utf8'))data=c1.recv(1024)print(data.decode('utf-8'))
其实就是写了两个函数,一个sock调用,一个conn调用,一个完成绑定,一个完成收发操作。
转载于:https://www.cnblogs.com/hai125698/p/9440153.html
2018-08-06-Python全栈开发day35-day36-select相关推荐
- python 全栈开发,Day36(作业讲解(大文件下载以及进度条展示),socket的更多方法介绍,验证客户端链接的合法性hmac,socketserver)...
先来回顾一下昨天的内容 黏包现象 粘包现象的成因 : tcp协议的特点 面向流的 为了保证可靠传输 所以有很多优化的机制 无边界 所有在连接建立的基础上传递的数据之间没有界限 收发消息很有可能不完全 ...
- python全栈开发工程师_【2018重磅巨献】老男孩Python高级全栈开发工程师第三期...
2018年老男孩python全栈第三期老男孩python全栈3期 老男孩教育Python全栈开发为国内首家专注python全方面开发的教育机构 老男孩Python全栈第三期课程详细目录,高清不加密! ...
- 某宝版千峰2018最新Python全栈开发加人工智能视频教程-尹成
某宝版千峰2018最新Python全栈开发加人工智能视频教程-尹成重点内容 下载地址: http://www.itxdl.cn
- python 全栈开发,Day104(DRF用户认证,结算中心,django-redis)
python 全栈开发,Day104(DRF用户认证,结算中心,django-redis) 考试第二部分:MySQL数据库 6. MySQL中char和varchar的区别(1分) char是定长, ...
- python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk)...
python 全栈开发,Day133(玩具与玩具之间的对话,基于jieba gensim pypinyin实现的自然语言处理,打包apk) 先下载github代码,下面的操作,都是基于这个版本来的! ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...
- python 全栈开发,Day103(微信消息推送,结算中心业务流程)
python 全栈开发,Day103(微信消息推送,结算中心业务流程) 昨日内容回顾 第一部分:考试题(Python基础)第二部分:路飞相关 1. 是否遇到bug?难解决的技术点?印象深刻的事?- o ...
- 【Python全栈开发从入门到实战】持续更新中......
本专栏为Python全栈开发系列文章,技术包括Python基础.函数.文件.面向对象.网络编程.并发编程.MySQL数据库.HTML.JavaScript.CSS.JQuery.bootstrap.W ...
- 路飞学城python全栈开发_[Python] 老男孩路飞学城Python全栈开发重点班 骑士计划最新100G...
简介 老男孩&路飞学城Python全栈开发重点班课程,作为Python全栈教学系列的重头戏,投入了全新的课程研发和教学精力,也是Python骑士计划的核心教学,由ALEX老师开班镇守,一线技术 ...
- python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)
python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...
最新文章
- 《基于压缩传感的匹配追踪重建算法研究》读书笔记
- Python3算法基础练习:编程100例(1~5)
- DataTables中提示:DataTables warning: table id=example - Cannot reinitialise DataTable.
- Python对Excel的读操作(完成)
- axureux中后台管理信息系统通用原型方案 v2_前端公共图表数据大盘方案
- matlab 电力系统动态仿真,基于Matlab的电力系统动态仿真分析
- java View转换类型_java强制类型转换.
- NYOJ--12--喷水装置(二)
- CHAPTER 28 VMX SUPPORT FOR ADDRESS TRANSLATION
- (转)人工智能步入金融领域的主流玩法
- ORAN专题系列-20:5G O-RAN 通过TR-069协议实现一体化小基站的自动配置和安装
- 电脑版我的世界java_我的世界pc JAVA版
- “Python小屋”1300篇历史文章分类速查表
- 直播场景音频降噪,传统算法 VS AI 算法对比和实践
- 水浊度传感器( ADC 代码详解)
- Jetpack 架构组件:Room 数据库应用
- 你还有“不撞南墙不回头”之心吗?
- 056.单链表就地逆置
- hadoop性能测试
- ThinkPHP5远程代码执行漏洞