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在命令行下使用google翻译(带语音)
Jan 16 Python
跟老齐学Python之玩转字符串(3)
Sep 14 Python
python使用cPickle模块序列化实例
Sep 25 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
Python如何用filter函数筛选数据
Mar 05 Python
django有哪些好处和优点
Sep 01 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 Python
python编程项目中线上问题排查与解决
Nov 01 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
Dedecms常用函数解析
2008/02/01 PHP
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
深入php-fpm的两种进程管理模式详解
2013/06/03 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
php封装的验证码类分享
2017/02/26 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
node.js中的fs.lchown方法使用说明
2014/12/16 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
AngularJS入门教程之链接与图片模板详解
2016/08/19 Javascript
JavaScript中清空数组的方法总结
2016/12/02 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
python实现批量下载新浪博客的方法
2015/06/15 Python
Python中的默认参数实例分析
2018/01/29 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
Python WSGI的深入理解
2018/08/01 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
英文简历中的自我评价
2013/10/06 职场文书
语文教学随笔感言
2014/02/18 职场文书
会展策划与管理专业求职信
2014/06/09 职场文书
群众路线个人剖析材料及整改措施
2014/11/04 职场文书
停水通知
2015/04/16 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS