1. 程式人生 > >python基礎學習日誌day8-socket上傳文件

python基礎學習日誌day8-socket上傳文件

文件大小 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上傳文件