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中的闭包实例详解
Aug 29 Python
Python多线程编程(六):可重入锁RLock
Apr 05 Python
Python中使用不同编码读写txt文件详解
May 28 Python
Python中使用urllib2模块编写爬虫的简单上手示例
Jan 20 Python
Python 快速实现CLI 应用程序的脚手架
Dec 05 Python
matplotlib 输出保存指定尺寸的图片方法
May 24 Python
Python3中详解fabfile的编写
Jun 24 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
pandas对dataFrame中某一个列的数据进行处理的方法
Jul 08 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
matplotlib基础绘图命令之bar的使用方法
Aug 13 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
Jan 27 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采集腾讯微博的实现代码
2012/01/19 PHP
PHP 万年历实现代码
2012/10/18 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
php 读取输出其他文件的实现方法
2016/07/26 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
Javascript中暂停功能的实现代码
2007/03/04 Javascript
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
NodeJS连接MongoDB数据库时报错的快速解决方法
2016/05/13 NodeJs
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
2020/03/18 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
浅析HTML5中的download属性使用
2019/03/13 HTML / CSS
美国在线宠物商店:Chewy
2019/01/12 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
应用电子技术专业个人求职信
2013/09/21 职场文书
支行行长竞聘报告
2014/11/06 职场文书
三下乡活动心得体会
2016/01/23 职场文书
2019最新版试用期劳动合同模板!
2019/07/04 职场文书
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
Python学习之迭代器详解
2022/04/01 Python