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中for循环详解
Jan 17 Python
python爬虫基本知识
Mar 05 Python
tensorflow实现简单的卷积网络
May 24 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
Python微信操控itchat的方法
May 31 Python
python原类、类的创建过程与方法详解
Jul 19 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
python中watchdog文件监控与检测上传功能
Oct 30 Python
python在地图上画比例的实例详解
Nov 13 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 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
phpmyadmin操作流程
2006/10/09 PHP
一个php作的文本留言本的例子(四)
2006/10/09 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
2014/02/12 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
js中作用域的实例解析
2017/03/16 Javascript
浅析vue-router原理
2018/10/19 Javascript
Vue匿名插槽与作用域插槽的合并和覆盖行为
2019/04/22 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
解决vuex数据页面刷新后初始化操作
2020/07/26 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python类的继承和多态代码详解
2017/12/27 Python
使用python生成目录树
2018/03/29 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
新学期班主任寄语
2014/01/18 职场文书
违反课堂纪律检讨书
2014/01/19 职场文书
升学宴主持词
2014/04/02 职场文书
施工安全责任书
2014/04/14 职场文书
机械专业技术员求职信
2014/06/14 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript