实例代码

服务器等待客户端连接的代码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)中由于网速原因造成的延迟?

高并发 python socket send 异步_对于Python中socket.listen()与多线程结合的困惑?相关推荐

  1. 高并发 python socket send 异步_在Python中使用异步Socket编程性能测试

    ok,首先写一个python socket的server段,对开放三个端口:10000,10001,10002.krondo的例子中是每个server绑定一个端口,测试的时候需要分别开3个shell, ...

  2. cpu多核 node 单线程_详解node单线程实现高并发原理与node异步I/O

    一.node单线程实现高并发原理 众所周知nodejs是单线程且支持高并发的脚本语言.可为什么单线程的nodejs可以支持高并发呢?很多人都不明白其原理,下面我来谈谈我的理解: 1. node的优点: ...

  3. 自学python能干什么工作_自学python能干什么

    Python是一种广泛使用的高级编程语言,属于通用型编程语言,是完全面向对象的语言.函数.模块.数字.字符串都是对象.经常被用于Web开发.GUI开发.操作系统.科学计算等应用范围. Python 是 ...

  4. 高并发内存占用持续下降_高并发性能调试经验分享

    引文 4月份的时候看到一道面试题,据说是腾讯校招面试官提的:在多线程和高并发环境下,如果有一个平均运行一百万次才出现一次的bug,你如何调试这个bug?知乎原贴地址如下:腾讯实习生面试,这两道题目该怎 ...

  5. cpu多核 node 单线程_node单线程支撑高并发原理(node异步I/O)

    一.node单线程实现高并发原理 众所周知nodejs是单线程且支持高并发的脚本语言.可为什么单线程的nodejs可以支持高并发呢?很多人都不明白其原理,下面我来谈谈我的理解: 1. node的优点: ...

  6. 用python做双人五子棋_基于python的socket实现单机五子棋到双人对战

    基于python的socket实现单机五子棋到双人对战,供大家参考,具体内容如下 本次实验使用python语言.通过socket进行不同机器见的通信,具体可以分为以下四步:1.创建ServerSock ...

  7. 服务器高并发时请求报错_基于redis的分布式锁防止高并发重复请求

    需求: 我们先举个某系统验证的列子:(A渠道系统,业务B系统,外部厂商C系统) (1)B业务系统调用A渠道系统,验证传入的手机.身份证.姓名三要素是否一致. (2)A渠道系统再调用外部厂商C系统. ( ...

  8. python简单图形输出_基于 Python Matplotlib 模块的高质量图形输出

    Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模块.它利用了 Python 下的数值计算模块 Numeric 及 Numarray,克隆了许多 M ...

  9. python 控制有线网卡_在Python中用socket捕获指定网卡的流量

    本文最后更新于2014年12月22日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! 指定连接到Internet的网卡: Get the IP address for the inte ...

最新文章

  1. 解决sqlplus的segmentation fault或hang问题
  2. 嵌入式 Jlink中flash.csv和*.jflash文件分析
  3. 深度学习入门必须理解这25个概念
  4. C或C 如何通过程序执行shell命令并获取命令执行结果?
  5. php 按照laravel5.5,Laravel5.5 综合使用
  6. 卸载oracle——详细版
  7. batchplot 3.6.2 插件_直播插件体系设计
  8. vmWare中安装centos7
  9. Android事件总线(四)源码解析otto
  10. Django中间件简析
  11. CrackMe-001
  12. 001如何将灰度视频处理为伪彩色
  13. 解决:115网盘下载路径失败
  14. [35期] 没有硝烟的战争
  15. network 网站流量
  16. oracle linux 退格,oracle database for linux 不能使用退格键
  17. 如何快速在Mac 安装 jq 命令行 JSON 解析器
  18. VS Code 常用快捷键代码大全
  19. 【NLP】中文文本分类数据增强方法:EDA 与代码实现
  20. python读取合并单元格并拆分合并单元格写出

热门文章

  1. 使用gdbserver远程调试
  2. 软件测试2019:第五次作业—— 安全测试(含安全测试工具实验)
  3. (转)python中的*args和**kw到底是个啥。看下面的例子就会懂了
  4. JS校验身份证号码的有效性
  5. Go语言TCP Socket编程
  6. 850 USB 烧录模式
  7. Windows UWP开发系列 – RelativePanel
  8. 蚁群算法和简要matlab来源
  9. [unix shell笔记] - 和find命令结合使用xargs命令
  10. c#编写的MD5加密类