socket + select 完成伪并发操作的实例


Posted in Python onAugust 15, 2017

实例如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket
#创建一个socket对象
sk1 = socket.socket()
#绑定ip和端口
sk1.bind(('127.0.0.1', 8001))
#监听
sk1.listen()
#定义一个字典存放客户端发送的信息
message_dict = {}
#inputs用于存放socket对象
inputs = [sk1]
#哪一个客户端发送信息就把哪一个客户端的存放进output
output = []
import select
while True:
  r_list, w_list, e_list = select.select(inputs, output, inputs, 1)
  print('正在监听的socket%d' %len(inputs))
  print(r_list)
  for sk_or_conn in r_list:
    if sk_or_conn == sk1:
      conn, address = sk_or_conn.accept()
      inputs.append(conn)
      message_dict[conn] = []
    else:
      try:
        data_bytes = sk_or_conn.recv(1024)
      except Exception as ex:
        inputs.remove(sk_or_conn)
      else:
        data_str = str(data_bytes, encoding='utf-8')
        message_dict[sk_or_conn].append(data_str)
        output.append(sk_or_conn)
  for conn in w_list:
    data_message = message_dict[sk_or_conn][0]
    del message_dict[sk_or_conn][0]
    conn.sendall(bytes(data_message + '好',encoding='utf-8'))
    output.remove(conn)

以上这篇socket + select 完成伪并发操作的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的闭包总结
Sep 18 Python
谈谈如何手动释放Python的内存
Dec 17 Python
Python中字典和集合学习小结
Jul 07 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
Python 3.8新特征之asyncio REPL
May 28 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
解决python 读取 log日志的编码问题
Dec 24 Python
Python递归实现打印多重列表代码
Feb 27 Python
构建高效的python requests长连接池详解
May 02 Python
python dir函数快速掌握用法技巧
Dec 09 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 Python
Python日期的加减等操作的示例
Aug 15 #Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
Aug 15 #Python
Python对列表中的各项进行关联详解
Aug 15 #Python
浅析Python中的赋值和深浅拷贝
Aug 15 #Python
Python单例模式的两种实现方法
Aug 14 #Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 #Python
python使用super()出现错误解决办法
Aug 14 #Python
You might like
Thinkphp无限级分类代码
2015/11/11 PHP
php微信开发之百度天气预报
2016/11/18 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
PHP unset函数原理及使用方法解析
2020/08/14 PHP
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
js遍历子节点子元素附属性及方法
2014/08/19 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
详解PHP中pathinfo()函数导致的安全问题
2017/01/05 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
基于node.js制作简单爬虫教程
2017/06/29 Javascript
详解VueJS 数据驱动和依赖追踪分析
2017/07/26 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
js实现选项卡效果
2020/03/07 Javascript
Python实现获取操作系统版本信息方法
2015/04/08 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
大学毕业生通用自荐信范文
2013/10/31 职场文书
公务员职业生涯规划书范文  
2014/01/19 职场文书
职工运动会邀请函
2014/02/02 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python