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的Django框架中的Cookie相关处理
Jul 22 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
Python requests上传文件实现步骤
Sep 15 Python
python 读取串口数据的示例
Nov 09 Python
Python基础之数据类型知识汇总
May 18 Python
Python类方法总结讲解
Jul 26 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文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
php中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
php实现RSA加密类实例
2015/03/26 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
谈谈JavaScript自定义回调函数
2015/10/18 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
js读取json文件片段中的数据实例
2017/03/09 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
Angular2中监听数据更新的方法
2018/08/31 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
2018/09/21 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
python模拟斗地主发牌
2020/04/22 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
Linux的文件类型
2012/03/07 面试题
电子专业推荐信范文
2013/11/18 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
平安建设汇报材料
2014/12/29 职场文书
担保书格式
2015/01/20 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL