python io多路复用
用for循环执行多用户访问
SEVER
import socket
sk1 = socket.socket()
sk1.bind(('127.0.0.1', 888))
sk1.listen()
import select
ipt = [sk1, ]
output = []
message_dic={}
eer=[]
while True:r_list, w_list, e_list = select.select(ipt, output, eer, 1)print('正在监听的sk对象 %s' % len(ipt))print(r_list)# for con in w_list:# con.sendall(bytes('hey', encoding='utf-8'))# output.remove(con)for sk_con in r_list:if sk_con == sk1:# 表示新客户来con, addr = sk_con.accept()ipt.append(con)message_dic[con]=[]else:# 老客户发消息try:data_bytes = sk_con.recv(1024)# data_str = str(data_bytes, encoding='utf-8')# sk.sendall(bytes(data_str + 'hao', encoding='utf-8'))except ConnectionResetError:eer.append(sk_con)else:# 用户正常发消息data_str = str(data_bytes, encoding='utf-8')message_dic[sk_con].append(data_str)output.append(sk_con)# ipt.remove(sk)# con.sendall(bytes('hi',encoding='utf-8'))# for sk in e_list:# ipt.remove(sk)for cont in w_list:rec_str=message_dic[cont][0]cont.sendall(bytes(rec_str+'hhhhh',encoding='utf-8'))del message_dic[cont][0]output.remove(cont)for sk in e_list:ipt.remove(sk)
sk1=socket.socket()
sk1.bind(('127.0.0.1',888))
sk1.listen()import select
ipt=[sk1,]
output=[]
while True:r_list, w_list, e_list = select.select(ipt, output, ipt, 1)print('正在监听的sk对象 %s' % len(ipt))print(r_list)for con in w_list:con.sendall(bytes('hey', encoding='utf-8'))output.remove(con)for sk in r_list:if sk==sk1:# 表示新客户来了con,addr=sk.accept()ipt.append(con)else:# 老客户发消息try:data_bytes=sk.recv(1024)data_str=str(data_bytes,encoding='utf-8')sk.sendall(bytes(data_str+'hao',encoding='utf-8'))except ConnectionResetError:output.append(sk)# ipt.remove(sk)# con.sendall(bytes('hi',encoding='utf-8'))# for sk in e_list:# ipt.remove(sk)
转载于:https://www.cnblogs.com/ezway/p/6725589.html
python io多路复用相关推荐
- python -- IO多路复用
python之路--IO模型 阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) ...
- python io多路复用_python实现IO多路复用 --- selector
IO多路复用 O多路复用技术是使用一个可以同时监视多个IO阻塞的中间人去监视这些不同的IO对象,这些被监视的任何一个或多个IO对象有消息返回,都将会触发这个中间人将这些有消息IO对象返回,以供获取他们 ...
- python io多路复用_Python之IO多路复用
一.IO模型介绍 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这 ...
- python io多路复用_【python】-- IO多路复用(select、poll、epoll)介绍及实现
IO多路复用(select.poll.epoll)介绍及select.epoll的实现 IO多路复用中包括 select.pool.epoll,这些都属于同步,还不属于异步 一.IO多路复用介绍 1. ...
- python io多路复用框架_python之IO多路复用
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别? 不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network IO. ...
- php io select,Python IO多路复用之——select方案服务端和客户端代码【python源码详解】...
准备文件: IO.py 服务端代码 tcp_c.py 客户端代码 IO.py 代码: from select import * #引入 select 模块 from socket import * ...
- python IO多路复用源码
# #非阻塞 # from socket import * # from time import sleep,ctime # s=socket() # s.bind(('0.0.0.0',7895)) ...
- Python网络编程:IO多路复用
io多路复用:可以监听多个文件描述符(socket对象)(文件句柄),一旦文件句柄出现变化,即可感知. 1 sk1 = socket.socket() 2 sk1.bind(('127.0.0.1', ...
- IO多路复用select/poll/epoll详解以及在Python中的应用
IO multiplexing(IO多路复用) IO多路复用,有些地方称之为event driven IO(事件驱动IO). 它的好处在于单个进程可以处理多个网络IO请求.select/epoll这两 ...
最新文章
- FastAI 课程学习笔记 lesson 1:宠物图片分类
- 前端开发者必备的Nginx知识
- php curl 下载网页,php 通过cURL函数抓取网页、下载网页的简单示例
- 干掉Navicat:正版 MySQL 官方客户端真香!
- Linux shell只读变量
- 规则引擎:大厂营销系统资格设计全解
- MySQL的行转列、列转行、连接字符串 concat、concat_ws、group_concat函数用法
- 【渝粤题库】广东开放大学 基础写作 形成性考核
- huffman算法c语言实验报告,huffman二叉树实验报告--数据结构(c语言).doc
- Linux 定时任务 定时备份mysql数据
- c++去除图片上的文字_图片文字修改去除方法
- 嘿,我这里有一个 Survey!
- 定义CPU阀值(转)
- leetcode Candy
- 如何成为一名数据分析师?
- linux下使用top和pmap命令查看系统运行状态和进程运行状态
- Unity2021 Inventory(背包)系统学习记录
- 千峰教育——网络管理
- android usb 默认mtp,usb修改为默认MTP模式
- 逻辑回归与线性回归算法梳理
热门文章
- Unable to instantiate Action错误的解决
- 游族马寅龙:常见信息安全风险及应对方案
- 西门子PLC编程软件,最新版本是TIA STEP7 V16,功能更加强大
- php做到聊天发图片,网页聊天框发送表情图片实现方法
- Qt动态翻译不生效!
- 梦最开始的地方,《一周学会Linux实战》韩顺平---视频笔记。到shell之前
- 海康威视视频对接--rtsp测试地址--vlc测试地址
- C语言for循环能不能定义,关于for循环的格式
- ABP继承自AbpController后路由无效
- bose蓝牙音箱使用说明_性价比甄选 推荐这5款超值得入手的蓝牙音箱