网络编程二(socketserver)
为什么使用socketserver模块?能多并发。
一、使用socketserver的基本步骤
1、写一个子类,继承socketserver.BaseRequestHandler,并且重写且handle方法
2、定义一个socketserver类
3、使用对象的serve_forever()方法
例子,但此例子还是只适合一个用户连接,不能使用于多用户:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 def main(): 2 class MyTcpHandle(socketserver.BaseRequestHandler): 3 # 定义handle方法 4 def handle(self): 5 while True: 6 try: 7 self.data = self.request.recv(1024).strip() 8 print('发送到:', self.client_address) 9 self.request.send(self.data.upper()) 10 except ConnectionResetError: 11 print('客户端断开了!') 12 break 13 14 server = socketserver.TCPServer(('localhost', 9999), MyTcpHandle) 15 server.serve_forever() 16 17 18 if __name__ == '__main__': 19 main()
要使用多并发,可使用socketserver.ThreadingTCPServer类,每进来一个客户端,就开启一个进程处理,例子如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import socketserver def main(): class MyTcpHandle(socketserver.BaseRequestHandler): # 定义handle方法 def handle(self): while True: try: self.data = self.request.recv(1024).strip() print('发送到:', self.client_address) self.request.send(self.data.upper()) except ConnectionResetError: print('客户端断开了!') break server = socketserver.ThreadingTCPServer(('localhost', 9999), MyTcpHandle) server.serve_forever() if __name__ == '__main__': main()