标签:处理 for logs 循环 res 调用 sockets break 监听
socketserver内部使用IO多路复用以及“多线程”和“多进程”,从而实现并发处理多个客户端请求的scoket服务端。即,每个客户端请求连接到服务器时,socket服务端都会在服务器是创建一个“线程”或“进程”专门负责处理当前客户端的所有请求。
ThradingTCPServer实现的socket服务器内部会为每个client创建一个“线程”,该线程用来heels客户端进行交互
1,ThradingTCPServer 基础
使用ThradingTCPServer:
代码:
#!/usr/bin/env python3 import socketserver class Server(socketserver.BaseRequestHandler): #$ 必须继承BaseRequestHandler def handle(self): #$ 必须有handle方法 print(‘New connection:‘,self.client_address) while True: data = self.request.recv(1024) if not data:break print(‘Client data:‘,data.decode()) self.request.send(data) if __name__ == ‘__main__‘: server = socketserver.ThreadingTCPServer((‘127.0.0.1‘,8009),MyServer) #$ 实现多线程的socket server.serve_forever() #$ 当前连接断开不会出现关闭或报错,可以与其他客户端继续连接
client端:
import socket ip_port = (‘127.0.0.1‘,8080) sk = socket.socket() sk.connect(ip_port) while True: raw = input(‘>> ‘).strip() sk.send(bytes(raw,‘utf8‘)) msg = sk.recv(1024) print(str(msg,‘utf8‘)) sk.close()
2,ThradingTCPServer源码剖析
内部调用流程为:
标签:处理 for logs 循环 res 调用 sockets break 监听
原文地址:http://www.cnblogs.com/wangmo/p/7792605.html