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私有属性和方法实例分析
Jan 15 Python
Python OS模块常用函数说明
May 23 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python部署web开发程序的几种方法
May 05 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
python线程定时器Timer实现原理解析
Nov 30 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
python实现UDP协议下的文件传输
Mar 20 Python
python实现126邮箱发送邮件
May 20 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
Jul 09 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
Python turtle实现贪吃蛇游戏
Jun 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
谈谈PHP语法(2)
2006/10/09 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
关于zend studio 出现乱码问题的总结
2013/06/23 PHP
php日历制作代码分享
2014/01/20 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
初识SmartJS - AOP三剑客
2014/06/08 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
js实现微信分享代码
2020/10/11 Javascript
jquery基础知识第一讲之认识jquery
2016/03/17 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
Python解决鸡兔同笼问题的方法
2014/12/20 Python
详解python进行mp3格式判断
2016/12/23 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
Python如何实现强制数据类型转换
2019/11/22 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
Python的logging模块基本用法
2020/12/24 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
cf收人广告词大全
2014/03/14 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python