python 网络编程之socketserver模块

Python的SocketServer模块简化了网络服务程序的编写,提供了TCPServer、UDPServer等类,以及请求处理类BaseRequestHandler。通过创建自定义的请求处理类并重写handle方法,结合服务器类实例,可以方便地实现TCP服务器和客户端。示例展示了如何使用SocketServer创建一个简单的TCP服务器和客户端。
摘要由CSDN通过智能技术生成

前言:(以下是基于我学习完python核心编程之网络编程篇章的个人知识输出,知识不算齐全,想深入的可自己再查阅书籍)

虽说用Python编写简单的网络程序很方便,但复杂一点的网络程序还是用现成的框架比较好。这样就可以专心事务逻辑,而不是套接字的各种细节。SocketServer模块简化了编写网络服务程序的任务。同时SocketServer模块也是Python标准库中很多服务器框架的基础。

socketserver(在Python2.*中的是SocketServer模块)是标准库中一个高级别的模块。用于简化网络客户与服务器的实现(在前面使用socket的过程中,我们先设置了socket的类型,然后依次调用bind(),listen(),accept(),最后使用while循环来让服务器不断的接受请求。而这些步骤可以通过SocketServer包来简化。)。模块中,已经实现了一些可供使用的类。

       我们将再次实现之前的那个基本TCP的例子。你会注意到新实现与之前有很多相似之处,但你也要注意到,现在很多繁杂的事情已经被封装好了,你不用再去关心那个样板代码了。例子给出的是一个最简单的同步服务器。

       为了要隐藏实现的细节。我们现在写程序时会使用类,这是与之前代码的另一个不同。用面向对象的方法可以帮助我们更好的组织数据与逻辑功能。你也会注意到,我们的程序现在是“事件驱动”了。这就意味着,只有在事件出现的时候,程序才有“反应”。

       在之前的服务循环中,我们阻塞等待请求,有请求来的时候就处理请求,然后再回去继续等待。现在的服务循环中,就不用在服务器里写代码了,改成定义一个处理器,服务器在收到进来的请求的时候,可以调用你的处理函数。

       类                 描述

 BaseServer               包含服务器的核心功能与混合(mix-in)类的钩子功能。这个类用于派生,不要直接生成这个类的类对象,可以考虑使用 TCPServer 和UDPServer。 
TCPServer/UDPServer     基本的网络同步 TCP/UDP 服务器 
UnixStreamServer/            基本的基于文件同步 TCP/UDP 服务器 
UnixDatagramServer 
ForkingMixIn/                      实现了核心的进程化或线程化的功能,用于与服务器类进行混合(mix-in),以提供一些异步特性。 
ThreadingMixIn                  不要直接生成这个类的对象 
ForkingTCPServer/            ForkingMixIn 和 TCPServer/UDPServer 的组合 
ForkingUDPServer 
ThreadingTCPServer/       ThreadingMixIn 和 TCPServer/UDPServer 的组合 
ThreadingUDPServer 
BaseRequestHandler       包含处理服务请求的核心功能。只用于派生新的类,不要直接生成这个类的对象,可以考虑使用 StreamRequestHandler 或DatagramRequestHandler 
StreamRequestHandler/   TCP/UDP 服务器的请求处理类的一个实现 
DatagramRequestHandler 


2.网络服务类:

SocketServer提供了4个基本的服务类:

TCPServer针对TCP套接字流

UDPServer针对UDP数据报套接字

UnixStreamServer和UnixDatagramServer针对UNIX域套接字,不常用。

它们的继承关系如下:

+------------+

| BaseServer |

+------------+

     |

     v

+-----------+        +------------------+

| TCPServer |------->| UnixStreamServer |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值