Python 聊聊socket中的listen()参数(数字)到底代表什么
作者:James Zeng 发布时间:2022-10-17 00:49:25
标签:Python,socket,listen
疑问
在调用socket的时候,我们会使用到listen()函数,里面有个参数叫backlog, 例如:socket.listen(5). 那么这个数字5到底代表什么意思呢?网上有很多种说法,讲的都是概念,很多都是复制粘贴,容易让人误解。
解答
下面使用具体的代码片段来讲解:
这是一个电脑本机模拟客服端及服务端的程序,主要功能是建立socket连接后,客户端输入关键字查询对应的段子,服务器端返回结果。服务器可以满足同时服务两个客户的查询操作此程序中还包含了信号量和多线程
以listen(1),参数设置为1进行讲解,是不是将参数设置为1后,开启3个客服连接就会报错呢?并不是!
如下图所示:
那么问题来了!
问题1:
如上例代码中,有listen(1),这个1是指什么?只能与1个socket建立链接吗? 为什么我用上面的代码可以创建大于1个的tcp连接却没报错,如果用网上其他人的说法理论上大于1个连接应该报错的!
因为:listen(n)传入的值, n表示的是服务器拒绝(超过限制数量的)连接之前,操作系统可以挂起的最大连接数量。n也可以看作是"排队的数量"
问题2:
既然没有报错,为什么没有打印用户3的地址?
因为:服务器正在处理用户1和用户2,没有空闲去接待用户3,所以用户3去排队了。
问题3:
为什么服务器能同时处理用户1和用户2?
因为:
这里用到了多线程和信号量,信号量设置为2,也就是允许并发数为2,服务器开启了两个线程,能同时分别处理用户1和用户2。
来源:https://blog.csdn.net/HFZeng/article/details/93843442
0
投稿
猜你喜欢
- 作者: wyh草样出处:https://www.cnblogs.com/wyh0923/p/14084898.html什么是文件文件是系统存
- 目的是能使用Python进行rtmp推流,方便在h264帧里加入弹幕等操作。librtmp使用的是0.3.0,使用树莓派noir官方摄像头适
- 使用现有的txt文本和图片,就可以用wordcloud包生成词云图。大致步骤是:1、读取txt文本并简单处理;2、读取图片,以用作背景;3、
- SOA 服务用消息进行通信,该消息通常使用XML Schema来定义(也叫做XSD, XML Schema Definition)。消费者和
- 突然发现, pycharm 2020.2都出来了哈, 现在jetbrain团队对中文用户也比较友好, 比以前更加适合小白了再就是很多类似的教
- 前言由于安装某个项目的执行文件,提示要卸载MySQL以便它自身MySQL安装,然后我禁用了MYSQL服务,再把这个文件夹删除后,发现还是提示
- 目前是把图片存在mongodb数据库,实现一个方法,比如 访问 /get_pic/ID 能实现图片在浏览器打开,添加了一个状态,比如?fil
- Django中的静态文件夹static在创建好Django项目时默认是没有的,需要我们手动自己去创建,static文件夹里主要存放一些能暴露
- 【JS对象属性的查询和设置】可以通过点(.) 或 方括号([]) 运算符来获取属性的值。运算符左侧应当是一个表达式,它返回一个对象。对于点(
- DataFrame是一个组织成命名列的数据集。它在概念上等同于关系数据库中的表或R/Python中的数据框架,但其经过了优化。DataFra
- 一、前言普通机器学习:从训练数据中学习一个假设。集成方法:试图构建一组假设并将它们组合起来,集成学习是一种机器学习范式,多个学习器被训练来解
- Multiplexer根据URL将请求路由给指定的Handler。Handler用于处理请求并给予响应。更严格地说,用来读取请求体、并将请求
- 第一段代码:#!/usr/bin/python# -*- coding: utf-8 -*-import emailimport mimet
- 本文实例为大家分享了python实现简单聊天室的具体代码,供大家参考,具体内容如下刚刚接触python编程,又从接触java开始一直对soc
- 目录自动化测试框架1.基础层(通用层)2.功能层(页面层)3.业务层4.用例层4层框架对应的项目工程总结自动化测试框架项目自动化测试框架设计
- 例如:JSON字符串:var str1 = '{ "name": "cxh", "
- 一个出错的例子#coding:utf-8s = u'中文'f = open("test.txt",&qu
- 图片轮播滤镜转换效果,只支持ie浏览器<img width="156" height="60"
- 前言最近在研究 pyecharts 的用法,它是 python 的一个可视化工具,然后就想着结合微信来一起玩不多说,直接看效果:
- 整数对象在Python内部用PyIntObject结构体表示:typedef struct {PyObject_HEADlong ob_iv