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 12 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
使用Python读取二进制文件的实例讲解
Jul 09 Python
Python中logging实例讲解
Jan 17 Python
python中如何使用分步式进程计算详解
Mar 22 Python
python网络编程之多线程同时接受和发送
Sep 03 Python
使用Python求解带约束的最优化问题详解
Feb 11 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
python Selenium 库的使用技巧
Oct 16 Python
Python调用飞书发送消息的示例
Nov 10 Python
Python 多线程处理任务实例
Nov 07 Python
详解Python内置模块Collections
Mar 22 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
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
垃圾回收器的相关知识点总结
2018/05/13 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python使用cookie库操保存cookie详解
2014/03/03 Python
Python中设置变量访问权限的方法
2015/04/27 Python
python类装饰器用法实例
2015/06/04 Python
Python时间和字符串转换操作实例分析
2019/03/16 Python
python实现猜数游戏
2020/03/27 Python
CSS3 @media的基本用法总结
2019/09/10 HTML / CSS
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
机械工程师求职自我评价
2013/09/23 职场文书
工程项目合作意向书
2015/05/08 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
永不妥协观后感
2015/06/10 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL