Python中通过socketserver库创建服务端

本文详细介绍了如何使用Python的socketserver库创建TCP服务端,包括导入库、定义自定义处理类、重写handle方法,以及通过TCPServer启动服务端的过程。

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语句_棉猴的博客-优快云博客

3 运行效果

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

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

图4 服务端运行效果

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

图5 服务端运行效果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值