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 14 Python
在Python中使用异步Socket编程性能测试
Jun 25 Python
python编写简单爬虫资料汇总
Mar 22 Python
Python中Django 后台自定义表单控件
Mar 28 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
Win10+GPU版Pytorch1.1安装的安装步骤
Sep 27 Python
Python3如何判断三角形的类型
Apr 12 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
详解Python中第三方库Faker
Sep 25 Python
python 利用opencv实现图像网络传输
Nov 12 Python
python基于爬虫+django,打造个性化API接口
Jan 21 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入门基础之php代码写法
2011/12/30 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
php实现分页工具类分享
2014/01/09 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
JS 显示当前日期与时间的代码
2010/03/24 Javascript
jQuery在vs2008及js文件中的无智能提示的解决方法
2010/12/30 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
JavaScript怎样在删除前添加确认弹出框?
2019/05/27 Javascript
微信小程序 可搜索的地址选择实现详解
2019/08/28 Javascript
微信小程序 动态修改页面数据及参数传递过程详解
2019/09/27 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Python箱型图处理离群点的例子
2019/12/09 Python
三个python爬虫项目实例代码
2019/12/28 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
让ie浏览器成为支持html5的浏览器的解决方法(使用html5shiv)
2014/04/08 HTML / CSS
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
成品仓管员岗位职责
2013/12/11 职场文书
公司年夜饭通知
2015/04/25 职场文书
中学总务处工作总结
2015/08/12 职场文书
Nginx进程调度问题详解
2021/09/25 Servers
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers