python-day29(socketserver ftp知识点讲解)

一. Socketserver

 1 import socketserver
 2 
 3 class KnightServer(socketserver.BaseRequestHandler):
 4 
 5     def handle(self):
 6         # self.request  相当于conn链接通道
 7         while 1:
 8             from_client_msg = self.request.recv(1024)
 9             print(from_client_msg.decode('utf-8'))
10             server_msg = input('服务端说>>>')
11             self.request.send(server_msg.encode('utf-8'))
12 
13 
14 if __name__ == '__main__':
15     ip_port = ('127.0.0.1',8001)
16     server = socketserver.ThreadingTCPServer(ip_port,KnightServer)
17     server.serve_forever()
 1 import socket
 2 import time
 3 client = socket.socket()
 4 client.connect(('127.0.0.1',8001))
 5 
 6 while 1:
 7     client_data = input('别开车>>>')
 8     client.send(client_data.encode('utf-8'))
 9 
10     from_server_msg = client.recv(1024)
11     print(from_server_msg.decode('utf-8'))
12 
13 client.close()
  • 启动服务端程序
  • 执行 TCPServer.__init__ 方法,创建服务端Socket对象并绑定 IP 和 端口
  • 执行 BaseServer.__init__ 方法,将自定义的继承自SocketServer.BaseRequestHandler 的类 MyRequestHandle赋值给self.RequestHandlerClass
  • 执行 BaseServer.server_forever 方法,While 循环一直监听是否有客户端请求到达 ...
  • 当客户端连接到达服务器
  • 执行 ThreadingMixIn.process_request 方法,创建一个 “线程” 用来处理请求
  • 执行 ThreadingMixIn.process_request_thread 方法
  • 执行 BaseServer.finish_request 方法,执行 self.RequestHandlerClass()  即:执行 自定义 MyRequestHandler 的构造方法(自动调用基类BaseRequestHandler的构造方法,在该构造方法中又会调用 MyRequestHandler的handle方法

二. ftp

猜你喜欢

转载自www.cnblogs.com/Thui/p/10021214.html
今日推荐