See More

--------------------------- socketserver | --------------------------- * socketserver Ä£¿éÊÇ¶Ô socket µÄ·â×° * ÓеãʼþÇý¶¯µÄÒâ˼ * ÀàÌåϵ BaseServer(Server×î¶¥²ãÀà) |-TCPServer |-ThreadingTCPServer(Ö§³Ö¶àÏ̵߳ÄTCPServer) |-ForkingTCPServer(Ö§³Ö¶à½ø³ÌµÄTCPServer,½ö½öÔÚunixÓÐЧ) |-UnixStreamServer |-UDPServer |-ThreadingUDPServer(Ö§³Ö¶àÏ̵߳ÄUDPServer) |-ForkingUDPServer(Ö§³Ö¶à½ø³ÌµÄUDPServer,½ö½öÔÚunixÓÐЧ)) |-UnixDatagramServer |-HTTPServer |-WSGIServer BaseRequestHandler(Handle¶¥²ãÀà) |-StreamRequestHandler |-BaseHTTPRequestHandler |-WSGIRequestHandler * BaseServer µÄһЩ·½·¨,ÔÚÓÐÌØÊâÐèÇóµÄʱºò¿ÉÒÔ×Ô¼º¸²Ð´ server_bind() * °ó¶¨¼àÌý * BaseServer µÄһЩÊôÐÔ allow_reuse_address * ĬÈÏΪ False,ÊÇ·ñÔÊÐí¶Ë¿Ú¸´Óà --------------------------- tcp | --------------------------- import socketserver class Handler(socketserver.BaseRequestHandler): def handle(self): self.request # ¿Í»§¶Ësocket¶ÔÏó # socket.socket fd=552, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 1024), raddr=('127.0.0.1', 3875)> self.client_address # ¿Í»§¶ËµØÖ· # ('127.0.0.1', 3875) self.server # µ±Ç°Server # server = socketserver.ThreadingTCPServer(('localhost',1024),Handler) server.serve_forever() --------------------------- udp | --------------------------- import socketserver class Handler(socketserver.BaseRequestHandler): def handle(self): self.request # ¿Í»§¶Ësocket¶ÔÏó,µÚÒ»¸ö²ÎÊý¾ÍÊÇudpµÄÊý¾Ý # (b'Hello,Python', ) self.client_address # ¿Í»§¶ËµØÖ· # ('127.0.0.1', 3875) self.server # µ±Ç°Server # server = socketserver.ThreadingUDPServer(('localhost',1024),Handler) server.serve_forever() --------------------------- httpÎļþĿ¼ | --------------------------- from http.server import SimpleHTTPRequestHandler import socketserver httpd = socketserver.TCPServer(('localhost', 3025), SimpleHTTPRequestHandler) httpd.serve_forever() --------------------------- ÎļþÉÏ´« | --------------------------- # ¿Í»§¶Ë import socket import os client = socket.socket() client.connect(('localhost',1024)) target_file = "D:\\eclipse-jee-oxygen-M7-win32-x86_64.zip" with open(target_file,'rb') as file: print('Îļþ´óС:%s'%(os.stat(target_file).st_size)) client.sendall(file.read()) client.shutdown(socket.SHUT_WR) # ·þÎñ¶Ë from socketserver import ThreadingTCPServer,BaseRequestHandler target_file = "E:\\eclipse-jee-oxygen-M7-win32-x86_64.zip" class Handle(BaseRequestHandler): def handle(self): request = self.request with open(target_file,'wb') as file: while True: data = request.recv(2048) print('ÒѾ­½ÓÊÕ:%s'%(len(data))) if len(data) == 0: break file.write(data) file.flush() request.close() server = ThreadingTCPServer(('localhost',1024),Handle) server.serve_forever()