标签:
SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进程” 专门负责处理当前客户端的所有请求。

ThreadingTCPServer
ThreadingTCPServer实现的Soket服务器内部会为每个client创建一个 “线程”,该线程用来和客户端进行交互。
1、ThreadingTCPServer基础
使用ThreadingTCPServer:
创建一个继承自 SocketServer.BaseRequestHandler 的类
类中必须定义一个名称为 handle 的方法
启动ThreadingTCPServer
?多并发实例:
服务端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/usr/bin/env pythonimport socketserverclass MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): #handle函数必须重新定义 while True: print(‘new conn:‘,self.client_address) data = self.request.recv(1024) if not data:break print(‘client says:‘,data.decode()) self.request.send(data)if __name__ == ‘__main__‘: host,port = ‘localhost‘,50007 server = socketserver.ThreadingTCPServer((host,port),MyTCPHandler) server.serve_forever() |
客户端:
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/usr/bin/env pythonimport socketip_port = (‘127.0.0.1‘,50007)sk = socket.socket()sk.connect(ip_port)while True: user_input = input(‘>>:‘) sk.send(bytes(user_input,‘utf8‘)) server_reply = sk.recv(1024) print(‘server reply:‘,str(server_reply,‘utf8‘))sk.close() |
标签:
原文地址:http://www.cnblogs.com/hetan/p/5274219.html