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实现检测服务器是否可以ping通的2种方法
Jan 01 Python
python 开发的三种运行模式详细介绍
Jan 18 Python
Python命令启动Web服务器实例详解
Feb 23 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
详解python校验SQL脚本命名规则
Mar 22 Python
详解python读取和输出到txt
Mar 29 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
python将字符串转变成dict格式的实现
Nov 18 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
基于python调用jenkins-cli实现快速发布
Aug 14 Python
全网最全python库selenium自动化使用详细教程
Jan 12 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
excellent!――ASCII Art(由目标图象生成ascii)
2007/02/20 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
一个简单的php路由类
2016/05/29 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
学习ExtJS Column布局
2009/10/08 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
升职自荐书范文
2013/11/28 职场文书
企业门卫岗位职责
2013/12/12 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
罚站检讨书
2015/01/29 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
出生证明格式
2015/06/15 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书