一、特性
每次连接对应一个线程,为一个客户提供服务,具有多线程、阻塞I/O、擅长长连接、利用多核特性、顺序执行等特点。
缺点:由于操作系统支持的线程数有限,伸缩性受线程数限制。
二、Python实现
from SocketServer import BaseRequestHandler
from SocketServer import ThreadingTCPServer
class EchoHandler(BaseRequestHandler):
def handle(self):
print("got connect from ", self.client_address)
while True:
data = self.request.recv(4096)
if data:
sent = self.request.send(data)
else:
print("disconnect ", slef.client_address)
self.request.close()
brreak
if __name__ == "__main__":
listen_addr = ("127.0.0.1", 2021)
server = ThreadingTCPServer(listen_addr, EchoHandler)
server.serve_forever()