码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python中通过socketserver库创建服务端


    socketserver库是Python的标准库,提供了套接字服务端的框架,通过该框架可以简化服务端的创建流程。

    1 socketserver库的导入

    通过如图1显示的代码导入socketserver库。

    图1 导入socketserver库

    2 通过socketserver库创建TCP服务端

    通过socketserver库创建TCP服务端分为如下步骤:首先定义socketserver库中BaseRequestHandler类的派生类;之后重写该派生类的handle()方法;最后实例化socketserver库中的TCPServer类,并通过该实例启动服务端。

    2.1 定义socketserver库中BaseRequestHandler类的派生类

    要创建一个服务端,必须定义socketserver库中的TCPServer类的实例,而定义该实例时需要指定请求处理(request handler)对象,该对象的定义了服务端如何处理客户端请求。BaseRequestHandler类是所有请求处理(request handler)对象类的父类。因此,需要首先定义socketserver库中BaseRequestHandler类的派生类,代码如图2所示。

    图2 定义socketserver库中BaseRequestHandler类的派生类

    其中,MyTCPHandler是自定义类,该类是socketserver库中BaseRequestHandler类的派生类。在MyTCPHandler中,重写了handle()方法,该方法的作用是定义了如何处理客户端的请求。第5行中定义了MyTCPHandler的data属性,self.request是父类的属性,表示与客户端通信的套接字,recv()表示接收来自客户端的数据,并保存到data属性中;第6行中的self.client_address是父类的属性,表示连入服务端的客户端列表;第7行打印出客户端发送的数据;第8行通过self.request即套接字,调用sendall()方法将收到的数据变为大写之后,发送给客户端。

    2.2 启动服务端

    通过socketserver库中的TCPServer类启动服务端,代码如图3所示。

    图3 启动服务端

    其中,第11行代码指定了服务端的IP地址和监听的端口号;第12行代码通过with...as语句定义了socketserver.TCPServer类的实例,server,并且将服务端的IP地址、监听的端口号以及自定义的请求处理类MyTCPHandler传递给该实例;第13行代码通过server调用serve_forever()方法启动服务端。

    相关链接1 with...as语句请参考

    Python中的with as语句_棉猴的博客-CSDN博客

    3 运行效果

    首先运行服务端,之后在windows10系统和windows7系统中分别运行Python网络编程改良版客户端-CSDN博客

    中提到的客户端,此时服务端的运行效果如图4所示。

    图4 服务端运行效果

    此时,客户端运行效果如图5所示。

    图5 服务端运行效果

  • 相关阅读:
    C# OpenCvSharp Mat操作-创建Mat-zeros
    算法:穷举,暴搜,深搜,回溯,剪枝
    猜一猜掌握哪个测试技能让你从容不破应对工作!
    每周AI新闻(2024年第9周)微软与Mistral AI达成合作 | 谷歌发11B基础世界模型 | 传苹果放弃电动汽车制造转向生成式AI
    日本IT Week秋季展丨美格智能以技术创新共建美好数字生活
    etcd备忘录
    灰度级形态学 - 灰度开运算和灰度闭运算
    【基础计算机网络1】认识计算机网络体系结构,了解计算机网络的大致模型(上)
    Hive的几种常见的数据导入方式
    DragonEnglish——个人英语学习项目
  • 原文地址:https://blog.csdn.net/hou09tian/article/details/134292113
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号