实例代码

服务器等待客户端连接的代码

from threading import Thread

from socket import socket, AF_INET, SOCK_STREAM

def echo_server(addr, nworkers):

# Run the server

sock = socket(AF_INET, SOCK_STREAM)

sock.bind(addr)

# 这里设置了listen(5),listen(5)限制了一个时刻服务器最多接收的客户端。

sock.listen(5)

while True:

client_sock, client_addr = sock.accept()

# 调用echo_client来处理客户端的连接

t = Thread(target=echo_client, args=(client_sock, client_addr))

t.daemon = True

t.start()

echo_server(('',15000)

服务器处理客户端的代码

def echo_client(sock, client_addr):

'''

Handle a client connection

'''

print('Got connection from', client_addr)

while True:

msg = sock.recv(65536)

if not msg:

break

sock.sendall(msg)

print('Client closed connection')

sock.close()

问题描述

问题一

书中是这样描述上面这个例子的: 尽管这个也可以工作, 但是它不能抵御有人试图通过创建大量线程让你服务器资源枯竭而崩溃的攻击行为。

但是我不明白的是服务器已经设置了listen(5),这个listen(5)难道不会限制每次只有5个客户端能够连接吗?攻击者怎么可以创造多个线程?

问题二

对于服务器网络IO延迟有一点不懂的地方,以上面的代码段2为例子,网络IO延迟是不是就是msg = sock.recv(65536)和sock.sendall(msg)中由于网速原因造成的延迟?

socket python 收 发 队列 线程_对于Python中socket.listen()与多线程结合的困惑?相关推荐

  1. python自动发微信新闻网_用python自制微信机器人,定时发送天气预报

    0 引言 前段时间找到了一个免费的天气预报API,费了好段时间把这个API解析并组装成自己想用的格式了,就想着如何实现每天发送天气信息给自己.最近无意中发现了wxpy库,用它来做再合适不过了.以下是w ...

  2. python自动发outlook邮件_使用python自动发邮件(163、QQ、outlook邮箱)

    import smtplib fromemail.mime.text import MIMEText fromemail.utils import formataddr fromdatetime im ...

  3. 钉钉python 自动发消息软件_利用Python自动发送钉钉数据消息,一个简单的上手小项目...

    现在大部分公司都使用钉钉作为内部的主要沟通工具,钉钉消息基本都上都能快速有效的被阅读,打开率会比邮件高上不少.所以准备使用钉钉来播报平台每日的成交额,并附上一些鼓励的话和图片.起到一个激励团队的作用 ...

  4. Python 进程 Process 与线程 threading 区别 - Python零基础入门教程

    目录 一.Python 线程 threading 创建 二.Python 进程 Process 创建 三.Python 进程 Process 和线程 threading 区别 四.Python 进程 ...

  5. python协程和线程_线程和协程之间的区别

    线程和协程之间的区别很大,甚至大过进程和线程之间的区别.线程建立在进程之上,协程建立在线程之上.那么协程是什么呢? 协程是一段计算机程序,它一般是一个协作类型的子程序,执行时允许暂停和恢复.协程非常适 ...

  6. python 强制结束线程_在python中实现强制关闭线程的示例

    Python 如何强制关闭线程过去只可以用来回忆,别沉迷在阴影中,否则永远看不清前面的路. Python用sleep停止一个线程的运行,而不影响主线程的运行,案例代码如下: from threadin ...

  7. python强制暂停线程_关于python:使用ThreadPoolExecutor强制线程超时

    我正在升级我的代码以使用ThreadPoolExecuter,并希望能够超时需要超过几秒钟处理的任何线程. 是否可以在作为线程池一部分的线程上强制超时? 我正在使用的代码如下. 1 2 3 4 5 6 ...

  8. python通信原理实验报告_【Python之旅】第五篇(一):Python Socket通信原理-阿里云开发者社区...

    只要和网络服务涉及的,就离不开Socket以及Socket编程,下面就说说Python Socket通信的基本原理. 1.Socket socket也称作"套接字",用于描述IP地 ...

  9. python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

最新文章

  1. HTML5 Web Worker
  2. ALAssetsLibrary-代码操作iOS相册资源
  3. 解决浏览器跨域加载本地文件报错 Access to script at ‘xxx‘ from origin ‘null‘ has been blocked by CORS policy
  4. C#Winform编程的基础知识
  5. 读“产品经理那些事儿”有感
  6. jQuery 的 ajax
  7. 全景探秘游戏设计艺术(1):游戏设计师
  8. 题库APP源码 在线题库源码 题库系统源码
  9. 你还在用分页?试试 MyBatis 流式查询,真心强大!
  10. 钉钉isv接入三方应用授权鉴权流程
  11. java集合优秀率怎么算,优秀率怎么算(及格率和优秀率公式)
  12. javaScript中什么时候用分号;
  13. java tetris_Java | Tetris
  14. maven生成webapp
  15. 202203 word中的表格 实现 外框线粗 内部线细
  16. Android中通过来电转移实现“电话已关机”,“此号码已停机”等
  17. 倾斜补偿的电子罗盘(2):磁传感器的误差来源、硬磁干扰的校准(3个参数)、实验验证
  18. asu在线硕士计算机课程,亚利桑那州立大学将在中国推出在线硕士学历项目 纯中文授课...
  19. 字节跳动All in教育的战略决心与长期主义
  20. pcie5.0 spec学习1.5----lane margining

热门文章

  1. java logging包_用JDK中提供的java.util.logging.*包创建Logger对象----原创
  2. Zookeeper知识梳理
  3. python定义类object_Python之ClassObject用法详解
  4. 【虚拟化】docker安装ElasticSearch+Kibana,下载IK分词器
  5. 使用Objects判断对象是否为空,并返回对应信息
  6. Vue 3 —— 当 data 和 ref 相同时 运行时错误 [ReferenceError: xxx is not defined]
  7. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(八)功能面板
  8. idea(一)使用详解
  9. redhat 中配置静态 IP
  10. Bootstrap4+MySQL前后端综合实训-Day04-PM【PowerDesigner 图形化数据库设计软件(设置依赖关系、自动增长主键、生成sql语句)、SQLyog软件(备份数据库)】