1. socketserver模块简介
socketserver是将socket和threading模块封装起来实现并发服务的模块,此节只复习基本的使用方法,以及基于基本的使用方法,并结合类的基本知识理解整个过程时如何运行的。
2. 基本语法
主要变化是server端,用对象建立了n个服务器
# Author:AD
# Date:2020/3/9
import socketserver, time
class MyServer(socketserver.BaseRequestHandler):
def handle(self):
print('server is running'.center(50, '-'))
print('server is:', self)
conn = self.request
print('client address is :', self.client_address)
while True:
data_bytes = conn.recv(1024)
if not data_bytes: break
print(data_bytes.decode('utf8'))
print('waiting')
time.sleep(0.5)
conn.sendall(data_bytes)
print('【server is closed】'.center(50, '-'))
print('close server is:', self)
conn.close()
my_server = socketserver.ThreadingTCPServer(('127.0.0.1', 8000), MyServer)
my_server.serve_forever()
3. 运行机制理解:
基于以上大类之间的继承关系来理解上一节的代码。
主程序中先执行init函数,然后再执行serve_forever(),详细分析见下图:
之后就是实例化自己创建的类的流程: