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所示。

扫描二维码关注公众号,回复: 17278768 查看本文章

图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 服务端运行效果

猜你喜欢

转载自blog.csdn.net/hou09tian/article/details/134292113