使用单进程,单线程,非堵塞---完成多任务!

2023-11-01

使用单进程,单线程,非堵塞—完成多任务!

代码如下:

import socket
import time

tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server.bind(("", 7890))
tcp_server.listen(128)
tcp_server.setblocking(False)  # 设置套接字为非堵塞的方式

client_socket_list = list()  # 定义一个空列表用来保存到来的客户端

while True:
    time.sleep(0.5)  # 设置延迟 方便测试
    try:
        new_socket, new_addr = tcp_server.accept()
    except Exception as ret:
        print("----没有新的客户端到来----")
    else:
        print("----只要没有产生异常,那么也就是意味着 来了一个新的客户端----")
        new_socket.setblocking(False)  # 设置套接字为非堵塞的方式
        client_socket_list.append(new_socket)  # 把新客户端存入列表中

    for client_socket in client_socket_list:  # 遍历列表内的客户端
        try:
            recv_data = client_socket.recv(1024)
        except Exception as ret:
            print(ret)
            print("----这个客户端没有发送过来数据----")
        else:
            print("----没有异常----")
            print(recv_data)
            if recv_data:
                # 对方发送过来数据
                print("----客户端发送过来了数据----")
            else:
                # 对方调用close 导致了 recv返回
                client_socket.close()
                client_socket_list.remove(client_socket)  # 从列表中删除
                print("*"*10+"客户端已经关闭"+"*"*10)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用单进程,单线程,非堵塞---完成多任务! 的相关文章

  • 以太坊智能合约字节码深入解析

    智能合约编写好之后需要通过编译器编译后才能在虚拟机上运行 智能合约的编译结果称为字节码 字节码是一串十六进制数字编码的字节数组 字节码的解析是以一个字节为单位 每个字节都表示一个EVM指令或一个操作数据 我们通过一个简单的智能合约来分析智能
  • 结构光的概念及其实现三维成像的主要原理

    结构光三维成像的硬件主要由相机和投射器组成 结构光就是通过投射器投射到被测物体表面的主动结构信息 如激光条纹 格雷码 正弦条纹等 然后 通过单个或多个相机拍摄被测表面即得结构光图像 最后 基于三角测量原理经过图像三维解析计算从而实现三维重建
  • 微特技术钢丝绳探伤仪自动监测系统功能概述

    前言 长期以来 钢丝绳的使用和管理始终是各企业设备管理的难点 因钢丝绳断裂造成的事故屡见不鲜 而每一次事故都伴随着财产损失和人员伤亡等严重后果 截至目前 肉眼看 卡尺量等依然是普遍性的钢丝绳检测手段 检测技术与用户的安全管理需求之间存在着巨
  • 服务器操作系统品牌怎么看,服务器操作系统品牌怎么看

    服务器操作系统品牌怎么看 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 以Linux操作系统为例 如果在变更规格后执行i
  • pta 一元多项式的乘法与加法运算

    7 2 一元多项式的乘法与加法运算 20 分 设计函数分别求两个一元多项式的乘积与和 输入格式 输入分2行 每行分别先给出多项式非零项的个数 再以指数递降方式输入一个多项式非零项系数和指数 绝对值均为不超过1000的整数 数字间以空格分隔
  • 关于selenium发起的浏览器被检测的解决方案

    场景 很多时候 我们在使用selenium做模拟爬取的时候 会碰到被检测的情况 其实关于selenium的检测是很好做的 因为selenium生成的浏览器在请求的时候 头部都会带上selenium的特征 这个特征就很好被服务器检测 解决方案
  • 【Django】使用模型对象的一点小坑

    先上结论 当使用manage py inspectdb table name 自动生成models py内容 如果数据库表中列包含大写字母 会被自动转换成小写字母 比如最近在做一个project 使用Django自带的模板对象来插入数据 本
  • XSS漏洞攻击

    目录 前言 Xss简介 XSS攻击原理 Xss攻击种类 反射型XSS get 储存型xss DOM型xss 前言 1 在掌握xss之前 首先要了解什么是html css JavaScript 1 Html 超文本标记语言 是一种用于创建网页
  • What‘s the difference between ‘virtual memory‘ and ‘swap space‘?

    There s an excellent explantation of virtual memory over on superuser Simply put virtual memory is a combination of RAM
  • 设计模式--过滤器模式

    过滤器模式 又叫标准模式属于结构型模式基本原理 创建过滤器 过滤出符合标准的对象 主要流程 1 准备原料 将对象抽象成有共性的一类 2 根据需求的不同创建各种过滤器 3 依靠过滤器过滤出需要的对象注意 过滤器是工具 创建的对象是原料 inc
  • Java版本号处理-split 点号 split(".")

    近期在做一个版本号的判断 在使用 Java split 方法时 希望把版本号中的数字组成数组 很自然的 我用了 split 来分割成数组 结果不行 String v 1 0 1 String vs v split int len vs le
  • 多中机器学习模型对比可视化

    传统的机器学习模型的选择往往是凭借经验和习惯 部分人一般情况会用TPOT今天最佳模型调参 但是也许要对比其他模型在哪些模型衡量指标下的优劣势 这里提供一个简单的效果对比工具 import matplotlib pyplot as plt m
  • 数睿通2.0数据中台数据资产、数据集市功能发布

    引言 数睿通 2 0 数据中台迎来了 7 月份的首次更新 本次更新主要是添加了数据资产 数据集市的相关核心功能 完整的功能实现尚需要时间打磨 因为最近工作实在是有些繁忙 琐事也多 所以能投入开发的时间着实有限 只实现了部分功能 通过数据资产
  • 路由器安装cloudflared进行内网穿透,安全访问内网

    文章目录 前言 一 Cloudflare Argo Tunnel是什么 二 使用步骤 1 开始准备 https developers cloudflare com cloudflare one setup 2 创建隧道 https deve
  • Win10系统下VisualStudio2019编译配置LAStools-v2.0.0

    目录 一 概述 1 LAStools v2 0 0 2 下载解压 二 源码编译 2 1 打开 2 2 移除加载失败的项目 2 3 修改代码 2 4 配置管理器 2 5 修改输出目录 2 6 修改头文件目录 2 7 修改运行库 2 8 生成l

随机推荐

  • matlabplot———散点图

    散点图 散点图 散点图的分类 散点图的优势 绘制散点图 散点图 散点图是指在回归分析中 数据点在直角坐标系平面上的分布图 散点图表示因变量随自变量而变化的大致趋势 在数据分析可视化时 一般会先绘制散点图 初步了解自变量和应变量之间的关系 通
  • wsl2安装archlinux

    前提 开启了WSL 虚拟平台 有WSL2内核 可以开启WSL2 下载Archlinux镜像 镜像名称archlinux bootstrap 2022 01 01 x86 64 tar gz 推荐到清华镜像站下载 下载LxRunOffline
  • 四.在centos上搭建Jira管理工具

    打开虚拟机并点击启动 再打开finalshell双击连接 打开navicat12 方法一 再在下载包里打开 1 下载配置jira 先进入根目录cd 创建两个文件mkdir software mkdir jiradata 进入software
  • jsp 页面编码优先级

    优先级如上图 另外贴一张之前的图
  • Ubantu——Linux文件解压和压缩

    Linux文件压缩和解压指令 一 gzip和gunzip 二 tar命令 三 tar解压和查看 压缩形式介绍 一 gzip和gunzip 例如 二 tar命令 使用区别如下 三 tar解压和查看 tar xvf 加上要解压的文件名字
  • 关于React项目中百度地图API的使用

    一 前言 1 首先进入百度地图API官方地址https lbsyun baidu com 选择适合自己项目的开发文档 我这次使用的是Javascript API 2 点击开发指南 gt Hello World 会有详细步骤介绍使用流程 按步
  • 牛客刷题 数组求和

    在leetcode上刷到第一题 又在牛客上刷到与第一题相似的第二 第三题 整理如下 第一题 给定一个整数数组 nums 和一个目标值 target 请你在该数组中找出和为目标值的那 两个 整数 并返回他们的数组下标 解题思路 public
  • 手机功能测试主要测哪些方面?

    1 RF收发信机指标测试 测试发射功率 发射频谱 接收灵敏度等等 2 音频指标测试 检查或测试发送音频灵敏度 振铃响度 受话器响度 失真度 侧音 免提功能等等 3 LCD和菜单功能的检查 看是否与说明书中所述内容相一致 4 各按键触觉和力度
  • docker基础:把容器做成镜像

    安装 Lua 语言环境 apt get update y apt get install y luajit luarocks 再用 exit 命令退出容器 再运行 docker commit 命令 docker commit a44444a
  • Apache优化

    Apache优化 Apache优化 系统层面优化 内核调试 关闭一些不必要运行的服务 或者删除一些不需要的用户 软件优化 Apache Tomcat Nginx Mysql Apache优化 工作模式 1 worker 单进程多线程 是和并
  • docker安装启动es

    原文链接 docker安装启动es 走看看 docker安装es和kibana docker pull elasticsearch 7 4 2 docker pull kibana 7 4 2 创建映射文件夹 并写入配置 mkdir p k
  • ShaderToy入门初体验

    ShaderToy入门初体验 前言 shadertoy https www shadertoy com 那些大神写的demo简直太震撼了 官方给出的how to 第一个程序 点击上图中的 新建 弹出下图界面 代码详解 void mainIm
  • table树形结构,获取一个节点的所有父节点

    判断叶子节点的所有父节点 function scheduleAlgorithm array 树形数据 value 根据该值判断找哪个节点的父节点 valueName fsecid 与上一节点相关联的值的字段名 childrenName ch
  • 【无人自主系统】自主系统自主性(持续更新内容中)

    事实上 过去当我们考虑地面 空中 水下无人设备的时候 我们考虑的是一个个子系统的自动化 传统意义上 自动化的定义是 系统或者设备在没有或者很少人工的参与下 完成特定操作 达成预期目的 广义的自动化涵盖执行逻辑操作的软件及其他应用过程 这也是
  • 不需要PS也能生成淘宝我的订单页面截图

    不知道大家有没有遇到这样的情况 在发微博 发朋友圈或者写博客的时候 想要分享购物心得 但却苦恼于找不到虚拟淘宝订单截图 别担心 今天我就来教大家一个轻松又快捷的方法 使用淘宝订单生成器 无需PS 虚拟淘宝订单在线生成工具 https tao
  • C语言循环结构

    目录 循环结构 while循环 基本while循环 do while循环 for循环 跳转语句 break continue goto 单纯的循环的常规操作 循环嵌套 循环嵌套的问题 作业 经典问题 百鸡百钱 经典问题 斐波拉契数列 循环结
  • 数据结构之顺序表(创建、使用、销毁)

    顺序表是在计算机内存中采用顺序存储的方式存储的线性表 是指用一组地址连续的存储单元依次存储数据元素的线性结构 顺序表的物理结构和逻辑结构都是连续的 顺序表的增删操作麻烦 需要移动的元素可能很多 修改和查找操作方便 通过下标访问 访问速度快
  • elementUI 表格组件设置高度之后去除滚动条

  • 用C++实现十大经典排序算法

    作者 billy 版权声明 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 简介 排序算法可以分为内部排序和外部排序 内部排序是数据记录在内存中进行排序 而外部排序是因排序的数据很大 一次不能容纳全部的排序记录 在排序过
  • 使用单进程,单线程,非堵塞---完成多任务!

    使用单进程 单线程 非堵塞 完成多任务 代码如下 import socket import time tcp server socket socket socket AF INET socket SOCK STREAM tcp server