【网络编程】Socket
网络编程(三) »>思维导图****> »博客园**** 基于TCP协议使用socket分发大文件 案例:电影上传 思路:客户端端循环一行一行读文件并一行一行传输,服务端循环接收并写入文件 客户端代码 import socket,json,os,struct client = cocket.socket() client.connet(('127.0.0.1',8080)) while True: # 获取电影类表,循环展示 MOVIE_DIR = r'D:\路径\视频' movie_list = os.listdir(MOVIE_DIR) for i,movie in enumerate(movie_list,1): print(i,movie) # 用户选择 choice = input('please choice movie to upload>>>:') # 判断是否是数字 if choice.isdigit(): # 将字符串转为int choice = in(choice) - 1 # 判断用户选择在不在列表范围内 if choice in range(0,len(movie_list)) # 获取用户想上传的文件路径 path = movie_list[choice] # 拼接文件的绝对路径 file_path = os.path.join(MOVIE_DIR,path) # 获取文件的大小 file_size = os.path.getsize(file_path) # 定义一个字典 res_d = { 'file_name':'性感荷官在线发牌.,mp4', 'file_size':file_size, 'msg':'注意身体,多喝营养快线' } # 序列话字典 json_d = json.dunps(res_d) json_bytes = json_d.encode('utf-8') # 1.先制作字典格式的报头 header = struct.pack('i',len(json_bytes)) # 2.发送字典的报头 client.send(header) # 3.再发字典 client.send(json_bytes) # 4.再发文件数据(打开文件循环发送) with open(file_path,r'b') as f: for line in f: client.send(line) else: print('not in rang') else: print('must be a number') 服务端代码 ...