Python网络编程改良版服务端

news2025/7/19 16:01:42

在《Python中套接字实现服务端和客户端3-1》中提到服务端可以接收来自客户端的连接,并且创造新的套接字与客户端进行数据通信。此时的服务端只能与一个客户端进行数据通信,如果有多个客户端连接服务端,该怎么对服务端进行改良呢?

1 使用while循环处理客户端的连接

可以通过while循环接收客户端的连接,代码如图1所示。

图1 与多个客户端通信

运行服务端后的效果如图2所示。

图2 服务器运行效果

从图2中可以看出,经过改良后的服务端,可以和IP地址为“192.168.147.129”的Win7通信,也可以与IP地址为“192.168.147.1”的Win10通信。通信完成后,继续等待其它客户端的连接。

2 使用非阻塞方式处理客户端的连接

2.1 存在的问题及分析

在“1 使用while循环处理客户端的连接”中改良的服务端,有一个问题就是当客户端1成功连接了服务端,但是客户端1没有向服务端发送数据;此时客户端2连接服务端,虽然能够成功连接,服务端却没办法接收客户端2发送的数据,如图3、图4和图5所示。

图3 服务端界面

图4 客户端1界面

图5 客户端2界面

从图3所示的服务端界面中可以看出,当服务端接收了客户端1(192.168.147.129)的连接后,代码会阻塞在recv()函数处,等待客户端1发送数据,如果客户端1一直没有发送数据,则服务端代码会一直阻塞,不会再继续运行。

2.2 套接字的非阻塞模式

可以将服务端中用于与客户端通信的套接字设置为非阻塞模式,这样当没有客户端发送数据时,服务端的recv()函数不会阻塞,代码会继续运行。

可以通过套接字类的setblocking()或者settimeout()将套接字设置为非阻塞,代码如图6所示。

图6 将套接字设置为非阻塞

从图6中可以看出,第16行代码调用setblocking(),该函数的参数是False时表示非阻塞模式,True表示阻塞方式;也可以使用settimeout()函数,该参数表示等待时间,0.0表示等待0.0秒即不等待,代码直接向下运行;第17行代码指定了等待时间,也就是说,当前连接的客户端如果在5秒钟之内不发送数据,则服务端不再等待。

运行改良后的服务端,当有两个客户端连接时,其界面如图7所示。

图7 改良后的服务端

从图7中可以看出,当客户端1(192.168.147.129)连接服务端后,在5秒钟之内没有发送数据,则服务端不再等待,继续监听其它客户端的连接。当客户端2(192.168.147.1)连接服务端时,服务端接收该连接,并且能够接收来自客户端2的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全流程TOUGH系列软件应用丨入门丨基础丨进阶丨实操

TOUGH系列软件是由美国劳伦斯伯克利实验室开发的,旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同,TOUGH系列软件采用模块化设计和有限积分差网格剖分方法,通过配合不同状态方程(EOS模…

100.一个linux内核选项对ssh的影响

(从这开始给文章编号,编号从100开始) 平台:rk3399(f4932-r2h) 内核:linux5.10 文件系统:firefly ssh:有线网卡 串口终端打印正常, 但是ssh登录却出现如下…

Xshell7试用期过了,打开就显示评估期已过,想继续或者不能删除怎么办?详细说明解决步骤

文章目录 1、问题说明2、解决办法2.1 重新安装2.2 卸载 1、问题说明 多长时间没用 Xshell 远程连接服务器,发现之前没有使用魔法工具处理(正版),现在过期了。 2、解决办法 想继续使用Xshell的话,有两种方式&#xff…

全光谱台灯对孩子眼睛好吗?2023五款全光谱护眼台灯推荐

全光谱台灯是一种能够模拟自然光谱的照明设备,其光线成分丰富,更接近自然阳光的光谱。相比传统的白炽灯或荧光灯,全光谱台灯在照明效果上更加均匀柔和,并且可以提供更好的颜色还原效果。对于孩子的眼睛来说,全光谱台灯…

ios UI 基础开发二

第一节:UIPickerView、UIPickerViewDataSource、UIPickerViewDelegate 设置约束,如果要设置两个兄弟的约束,可以按住option键,用鼠标右键把a拖到b上面,表示a按照b来对齐 生成随机数 如果后面列的数据,依赖前…

JL-03多场合通用型小型气象站

JL-03小型气象站,用于对风速、风向、雨量、空气温度、空气湿度、太阳辐射、光照强度、土壤温度、土壤湿度、蒸发量、大气压力等气象要素进行监测。既可以通过无线通讯将数据传送至云平台,又可以通过配套的数据采集通讯线与计算机进行连接,将数…

ARP协议

ARP协议 文章目录 ARP协议ARP协议的作用ARP协议的定位ARP数据报的格式ARP协议的工作流程ARP缓存表RARP协议 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。 ARP协议的作用 ARP协议…

手机爬虫用Scrapy详细教程:构建高效的网络爬虫

如果你正在进行手机爬虫的工作,并且希望通过一个高效而灵活的框架来进行数据抓取,那么Scrapy将会是你的理想选择。Scrapy是一个强大的Python框架,专门用于构建网络爬虫。今天,我将与大家分享一份关于使用Scrapy进行手机爬虫的详细…

2023最令人心动的短视频配音软件

配音在影视、广告和动画等领域中起着非常重要的作用,可以为作品增添情感和戏剧性。然而,许多人不知道如何制作配音,如果你也是这样,一定要花一分钟看完这篇文章。 其实现在有一些AI智能配音软件就很好用,可以帮助我们…

Windows安装SNMP服务

windows10安装SNMP服务 打开计算机的设置–应用–应用和功能–可选功能–点击加号添加功能,添加以下两个功能: windows server安装SNMP服务 搜索打开服务器管理器,点击功能–添加功能,勾选SNMP服务,点击下一步,等待安装完成 按win+R快捷键,运行service.msc,在服务中将…

电脑D盘文件凭空消失了?切记3招,轻松恢复文件!

“由于我c盘内存不够了,我就将部分重要的文件保存到了d盘,今天打开d盘后才发现我这些文件凭空消失了。这究竟是什么呀?还有机会找回这些消失的d盘文件吗?” D盘作为电脑中一个重要的磁盘,很多电脑用户也会选择将文件保…

摩尔信使MThings的协议转换(数据网关)功能

摩尔信使MThings可以作为现场总线(RS485)和以太网的数据中枢,并拥有强大的Modbus协议转换功能。 数据网关功能提供协议转换和数据汇聚功能,可实现多维度映射,包括:不同的通道(总线)类型、协议类型&#xff…

QSpace Pro 4.0.4.001(多面板文件管理器)

QSpace是一个干净高效的多面板文件管理器,也可以连接到FTP,SFTP,WebDAV,Dropbox,OneDrive,GoogleDrive,Amazon S3(和S3兼容),Aliyun OSS。它具有与Finder相同…

调优C / C ++编译器以在多核应用程序中获得最佳并行性能:第一部分

领取嵌入式物联网学习路线对于希望通过多核设计中的多线程或分区利用并行性的而言,重要的第一步是提高应用程序的标量性能。 更好,更轻松的方法之一是应用积极的编译器优化。面向您的处理器并具有高级优化功能(例如自动矢量化,过…

多维时序 | MATLAB实现SSA-CNN-BiGRU-Attention多变量时间序列预测(SE注意力机制)

多维时序 | MATLAB实现SSA-CNN-BiGRU-Attention多变量时间序列预测(SE注意力机制) 目录 多维时序 | MATLAB实现SSA-CNN-BiGRU-Attention多变量时间序列预测(SE注意力机制)预测效果基本描述模型描述程序设计参考资料 预测效果 基本…

身份证二要素核验API:提高身份验证的便捷性与安全性

引言 随着数字化时代的不断发展,身份验证变得愈发重要。在互联网上,身份验证是保护用户隐私和数据安全的关键环节。为了满足这一需求,身份证二要素核验API应运而生,成为提高身份验证的便捷性与安全性的得力工具。 身份验证的重要…

成都爱尔周进院长解读不同近视手术的不同度数要求

常有人这么问:我xx度了还能做近视手术吗?我才xx度也能做近视手术吗? 度数,确实是自己掌握地最清楚“最直观”的一个数据。 要说屈光手术的指标,有角膜曲率、角膜厚度、角膜地形等非常之多。 但这些数据不做详细检查自己根本不知道&#xff…

实战讲解 SpringBoot 定时任务:@Scheduled

最近的开发中又遇到了关于定时调度的开发任务,在定时调度其实有很多的第三方平台可以接入,但是其实在SpringBoot有自带的定时任务注解Scheduled。Scheduled可以通过注解配置快速实现方法的定时调度,直接在方法加上Scheduled注解即可。 1Sche…

什么牌子的led台灯质量好?五款Led护眼台灯推荐

led台灯有环保无污染、耗能低、长寿命等优点,适合用在阅读、书写、批阅等办公或学习的场所。而挑选LED台灯时,分散光挡板做的比较好的优先选择,能分散大量蓝光,对眼睛危害较小。下面,小编为大家推荐五款质量好的led护眼…

MATLAB2018a安装出现License Manager Error-8问题

matlab2018a的path的文件夹解压后为 打开后,找到文件“netapi32.dll”,将其复制到 将其复制到软件安装目录 \MATLAB\R2018a\bin\win64目录下覆盖源文件,安装后没有R2018a文件,所以是要将这个dll文件拷贝到安装目录下的bin/win64文…