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中类的继承代码实例
Oct 28 Python
讲解Python中运算符使用时的优先级
May 14 Python
浅谈Python黑帽子取代netcat
Feb 10 Python
如何在Cloud Studio上执行Python代码?
Aug 09 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
python同时遍历两个list用法说明
May 02 Python
python中如何进行连乘计算
May 28 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 Python
Django配置跨域并开发测试接口
Nov 04 Python
在pycharm中无法import所安装的库解决方案
May 31 Python
Python编程源码报错解决方法总结经验分享
Oct 05 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数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
2016/04/04 PHP
php 删除一维数组中某一个值元素的操作方法
2018/02/01 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
js multiple全选与取消全选实现代码
2012/12/04 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
python基础教程之lambda表达式使用方法
2014/02/12 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
python僵尸进程产生的原因
2017/07/21 Python
Python通过future处理并发问题
2017/10/17 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
pyqt5移动鼠标显示坐标的方法
2019/06/21 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
python常用排序算法的实现代码
2019/11/08 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
Dower & Hall官网:英国小众轻奢珠宝品牌
2019/01/31 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
幼儿园中班上学期评语
2014/04/18 职场文书
商业街策划方案
2014/05/31 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript
JS 基本概念详细介绍
2021/10/16 Javascript
Python list列表删除元素的4种方法
2021/11/01 Python