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 PyQt5标准对话框用法示例
Aug 23 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
python中使用%与.format格式化文本方法解析
Dec 27 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
python3去掉string中的标点符号方法
Jan 22 Python
Python寻找路径和查找文件路径的示例
Jul 10 Python
python [:3] 实现提取数组中的数
Nov 27 Python
python3爬取torrent种子链接实例
Jan 16 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
TensorFlow打印输出tensor的值
Apr 19 Python
python实现文法左递归的消除方法
May 22 Python
深入了解python列表(LIST)
Jun 08 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
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
2014/06/19 PHP
优化WordPress中文章与评论的时间显示
2016/01/12 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
对于Form表单reset方法的新认识
2014/03/05 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
2016/08/08 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
python执行外部程序的常用方法小结
2015/03/21 Python
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
Python温度转换实例分析
2018/01/17 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
pytorch的batch normalize使用详解
2020/01/15 Python
柯基袜:Corgi Socks
2017/01/26 全球购物
EQVVS官网:设计师男装和女装
2018/10/24 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
承认错误的检讨书
2014/01/30 职场文书
电气自动化专业职业规划范文
2014/02/16 职场文书
物理课外活动总结
2014/08/27 职场文书
小升初自荐信范文
2015/03/05 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL