python基礎學習日誌day8-socket上傳文件
阿新 • • 發佈:2017-06-17
文件大小 input author strong filename pat port san ont
ftp server
1) 讀取文件名
2)檢查文件是否存在
3)打開文件
4)檢查文件大小
5)發送文件大小給客戶端
6)等客戶端確認
7)開始邊讀邊發數據
下載文件
客戶端 # -*- coding:utf-8 -*- __author__ = ‘shisanjun‘ import socket import json import os host=("127.0.0.1",9000) client=socket.socket() client.connect(host) while True: cmd_str=input("請輸入命令>>").strip()if len(cmd_str)==0:continue cmd_list=cmd_str.split() if cmd_list[0]=="put": if len(cmd_list)==1: print("not find put filename") else: filename=cmd_list[1] if os.path.isfile(filename): file_obj=open(filename,‘rb‘) filename2=filename.split("/")[-1] print(filename2) data_stat="%s %s" %(filename2,os.path.getsize(filename)) data={ "filename":filename2, "filesize":os.path.getsize(filename) } client.send(json.dumps(data).encode("utf-8")) for line in file_obj: client.send(line) file_obj.close() else: print("can not find file") elif cmd_list[0]=="get": pass 服務器端 # -*- coding:utf-8 -*- __author__ = ‘shisanjun‘ import socket import json host=("127.0.0.1",9000) server=socket.socket() server.bind(host) server.listen(5) while True: conn,addr=server.accept() data=conn.recv(4096) print(data.decode("utf-8")) data_dict=json.loads(data.decode("utf-8")) filename=data_dict.get("filename") f=open(filename,"wb") recesize=0 while recesize<data_dict.get("filesize"): recefile=conn.recv(4096) f.write(recefile) recesize+=len(recefile) f.close()
python基礎學習日誌day8-socket上傳文件