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 13 Python
举例讲解Python中is和id的用法
Apr 03 Python
部署Python的框架下的web app的详细教程
Apr 30 Python
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
python dict.get()和dict['key']的区别详解
Jun 30 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
有趣的python小程序分享
Dec 05 Python
python发送邮件脚本
May 22 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
基于python制作简易版学生信息管理系统
Apr 20 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解析URL函数parse_url和parse_str
2014/11/11 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
javascript attachEvent绑定多个事件执行顺序问题
2010/10/20 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
Element Steps步骤条的使用方法
2020/07/26 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:奇迹哥卡尔秀翻全场
2017/03/28 DOTA
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
matplotlib实现区域颜色填充
2019/03/18 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
Django 解决由save方法引发的错误
2020/05/21 Python
python3.4中清屏的处理方法
2020/07/06 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
销售自我评价
2013/10/22 职场文书
优秀学生获奖感言
2014/02/15 职场文书
管事部库房保管员岗位职责
2014/02/21 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
构建高效课堂实施方案
2014/03/13 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
销售岗位职责范本
2014/06/12 职场文书
个人年终总结开头
2015/03/06 职场文书
员工安全责任协议书
2016/03/22 职场文书