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导入txt数据到mysql的方法
Apr 08 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
python数据类型判断type与isinstance的区别实例解析
Oct 31 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
django将数组传递给前台模板的方法
Aug 06 Python
Python实现快速排序的方法详解
Oct 25 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
Python selenium模块实现定位过程解析
Jul 09 Python
python 绘制正态曲线的示例
Sep 24 Python
python线程池 ThreadPoolExecutor 的用法示例
Oct 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
session在PHP大型web应用中的使用
2011/06/25 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
列表内容的选择
2006/06/30 Javascript
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
Python 数据处理库 pandas进阶教程
2018/04/21 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
python super的使用方法及实例详解
2019/09/25 Python
pycharm显示远程图片的实现
2019/11/04 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
Python如何存储数据到json文件
2020/03/09 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
大学毕业感言200字
2014/03/09 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
竞聘上岗演讲
2014/05/19 职场文书
工作求职信
2014/07/04 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js