博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
io多路复用(三)
阅读量:5908 次
发布时间:2019-06-19

本文共 1425 字,大约阅读时间需要 4 分钟。

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import socket 4 sk1 = socket.socket() 5 sk1.bind(('127.0.0.1',8001,)) 6 sk1.listen() 7  8 inputs = [sk1,] 9 outputs = []10 message_dict = {}11 import select12 while True:13     # [sk1,sk2,sk3]select内部自动监听sk1,sk2,sk3,三个对象,一旦某个句柄发生变化(accept())14     # 如果有链接sk115     # r_list = [sk1,sk2]16     r_list,w_list,e_list = select.select(inputs,outputs,inputs,1)17     print('正在监听的socket对象%d' % len(inputs))18     print(r_list)19     for sk1_or_conn in r_list:20         # 每一个链接对象21         if sk1_or_conn ==sk1:22             # 表示有新用户链接23             conn,adress = sk1_or_conn.accept()24             inputs.append(conn)25             message_dict[conn] = []26         else:27             # 表示有老用户来链接28             try:29                 data_bytes = sk1_or_conn.recv(1024)30             except Exception as e:31             else:32                 data_str = str(data_bytes, encoding='utf-8')33                 message_dict[sk1_or_conn].append(data_str)34                 outputs.append(sk1_or_conn)35                 #sk1_or_conn.sendall(bytes(data_str + '好', encoding='utf-8'))36     for conn in w_list:37         recv_str = message_dict[conn][0]38         del message_dict[conn][0]39         conn.sendall(bytes(recv_str + '好', encoding='utf-8'))40         outputs.remove(conn)41     for sk in e_list:42         inputs.remove(sk)

 

转载于:https://www.cnblogs.com/Erick-L/p/6481161.html

你可能感兴趣的文章
如何设计并实现一个线程安全的 Map ?(上篇)
查看>>
JavaScript的工作原理:解析、抽象语法树(AST)+ 提升编译速度5个技巧
查看>>
react-step-by-step之redux详细注释
查看>>
随手打造一个可以替换全站字符串的nginx镜像(docker)
查看>>
前端开发,关于图片的那些事
查看>>
对于一致性哈希算法的理解
查看>>
初识Spring —— Bean的装配(二)
查看>>
腾讯云上 PhantomJS 用法示例
查看>>
从函数调用到函数式编程
查看>>
centos7 wiki搭建
查看>>
Hexo设置主题以及Next主题个性设置
查看>>
PHP最佳实践系列之标准
查看>>
TiDB 2.1 GA Release Notes
查看>>
关于CSS层叠、CSS继承、CSS盒模型概述
查看>>
mybatis-自定义TypeHandler 的坑
查看>>
测试聊天机器人的新方法——Botfuel Dialog
查看>>
web 如何工作
查看>>
Android面试之Java设计模式
查看>>
聊一聊Javascript中的Promise对象
查看>>
DataBinding绑定android:onClick出错
查看>>