class MyFtpTcpSever:
POST = 8686
flie_Path =r'W_26/day3(scoket拓展)/downlode_file/01 python fullstack 开班介绍 part1.mp4'
downlode_path = r'W_26/day3(scoket拓展)/文件传输'
socket_family = AF_INET
socket_type = SOCK_STREAM
coding = 'utf-8'
request_queue_size = 5
allow_reuse_address = False
max_packet_size = 8192
def __init__(self, server_address,bind_and_activate=True):
"""Initializer May be extended, do not override"""
self.server_address =server_address
self.server_socket = socket(self.socket_family,self.socket_type)
if bind_and_activate:
try:
self.server_bine()
self.listen()
except:
print('connect false')
print('copnnect successful')
def server_bine(self):
'''套接字绑定ip地址'''
self.server_socket.bind(self.server_address)
self.server_address = self.server_socket.getsockname()
def sever_listen(self):
"""激活套接字监听"""
self.server_socket.listen(self.request_queue_size)
return
def sever_close(self):
'''回收资源'''
self.server_socket.close()
def sever_requset(self):
'''接收请求'''
return self.server_socket.accept()
def send_hand_len(self,hand_data):
"""第一次 发送标头长度标头"""
hand = struct.pack('i',len(hand_data))
self.server_socket.send(hand)
def send_hand(self,operat):
self.file_name = os.path.basename(self.flie_Path)
self.file_size = os.path.getsize(self.flie_Path)
hand={
'file name' : self.file_name,
'file size' : self.file_size,
'cmd' : operat
}
def pras_cmd(self,cmd = b"sadd"):
"""解析命令行"""
args = cmd.decode('utf-8').split()
return args
def sever_downlode(self,args):
cmd = args[0]
file_name = args[1]
file_path = os.path.join(self.downlode_path,file_name)
with open(file_path,'rb') as f:
for line in f:
self.server_socket.send(line)
def run(self):
while True:
pass