标准类库 - 因特网协议与支持之socketserver
by:授客 QQ:1033553122
socketserver 模块,简化网络服务编写任务。
创建服务的步骤
1 通过子类化BaseRequestHandler 类,创建一个请求处理程序,并且重写handle()方法,该方法将处理接收到的请求
2 传递服务器地址和请求处理程序类参数,实例化server类(如TCPServer)
3 调用server对象的handle_request()、serve_forever()方法,处理单个、多个请求
实例
socketserver.TCPServer
服务端(单线程服务器)
#!/usr/bin/env python 3.4.0
#-*- encoding:utf-8 -*-
__author__ = 'shouke'
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
"""
供server使用的RequestHandler类.
每个客户端连接连接到服务器时都会被初始化一次,并且必须重写handle()方法以便同客户端交流。
"""
def handle(self):
while True:
# self.request即为与客户端连接的TCP socker
self.data = self.request.recv(1024).decode('utf-8').strip()
print('receive data from client[host:%s port:%s]:%s' % (self.client_address[0], self.client_address[1], self.data))
if self.data == 'bye':
self.request.sendall(bytes('bye', encoding='utf-8'))
self.request.close()
break
else:
self.request.sendall(self.data.upper().encode('utf-8'))
if __name__ == '__main__':
# 创建TCPSocket服务器,绑定到10.118.52.26地址上,端口8000
server = socketserver.TCPServer(('10.118.52.26', 8000), MyTCPHandler)
# 激活服务器,让服务器一直运行,直到按Ctrl+C
server.serve_forever()
客户端
#!/usr/bin/env python 3.4.0
#-*- encoding:utf-8 -*-
__author__ = 'shouke'
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
"""
供server使用的RequestHandler类.
每个客户端连接连接到服务器时都会被初始化一次,并且必须重写handle()方法以便同客户端交流。
"""
def handle(self):
while True:
# self.request即为与客户端连接的TCP socker
self.data = self.request.recv(1024).decode('utf-8').strip()
print('receive data from client[host:%s port:%s]:%s' % (self.client_address[0], self.client_address[1], self.data))
&n